#.net #vb.net #debugging #deserialization #type-conversion
#.net #vb.net #отладка #десериализация #преобразование типа
Вопрос:
Я десериализирую большой объект.
Dim Obj As Object = Nothing
Using FileStream As New System.IO.FileStream(File, System.IO.FileMode.Open)
Dim BinaryFormatter As New Runtime.Serialization.Formatters.Binary.BinaryFormatter
Try
Obj = BinaryFormatter.Deserialize(FileStream)
Catch ex As Exception
Me.Notify(vbCrLf amp; ex.Message)
End Try
End Using
Поскольку a изменил тип переменной с double на integer, теперь я получаю ошибку при десериализации («Объект типа ‘System.Double’ не может быть преобразован в тип ‘System.Int32’.»).
Проблема в том, что теперь, имея много переменных, я не помню, какую из них я изменил, и в сообщении об ошибке нет подсказки (пожалуйста, избавьте меня от оскорблений, я знаю, что был глупым 🙂 ).
Как мне заставить отладчик напоминать мне имя поля-нарушителя, чтобы я мог изменить его обратно на double или переименовать?
(c# или vb.net подсказки были бы оба полезны: не вопрос, зависящий от конкретного языка)
Комментарии:
1. есть ли
InnerException
вException
?2. насколько я знаю, когда вы получаете эту ошибку, объект не может быть создан, поэтому эти переменные не существуют. Частичный объект не создается, но иногда вы можете установить разрывы или попробовать / перехватить в установщиках реквизитов, чтобы отследить виновника
3. Согласно Sayse, не могли бы вы проверить переменную ex, у нее может быть свойство inner exception, у которого тоже может быть свойство inner exception … или Me.Notify(vbCrLf amp; ex. toString()) предоставит полную информацию об ошибке.
4. это не может сказать вам, что
FooVar
является проблемой, потому что а) вашObj
не был создан при сбое сериализации б)FooVar
не является членом System. Объект c) попытка выполнить детализацию в переменной объекта, которая не является ничем, чтобы получить имя, скорее всего, приведет к новому исключению NullReference. Это просто поля или свойства, которые она сериализует?5. Я не думаю, что вы можете; не с двоичным объектом. Если бы оно было сериализовано в XML, это было бы проще…