Я написал собственный класс MyClass
и пометил его < Serializable ()>
атрибут. У меня есть набор двоичных файлов на моем жестком диске, которые я сериализовал с помощью BinaryFormatter
, полученного из экземпляров MyClass
.
Недавно я изменил структуру ] MyClass
немного (добавил некоторые свойства, удалил некоторые свойства, изменил несколько методов и т. Д.).
Что происходит, когда я пытаюсь десериализовать существующие объекты в этот измененный класс, используя приведенный ниже код? I ' я пробовал это и не получил ошибки или чего-то еще - но, конечно, он не может десериализоваться должным образом, когда класс изменился? Есть ли способ получить полезную информацию из сериализованных файлов, даже если я обновил класс?
Спасибо.
Вот код, который я использую для сериализации:
Public Sub serializeObject(ByVal obj As Object, ByVal outFilename As String)
Dim fStream As FileStream
Try
fStream = New FileStream(outFilename, FileMode.Create)
Dim bfmtr As New BinaryFormatter
bfmtr.Serialize(fStream, obj)
fStream.Close()
Catch ex As Exception
MsgBox("Failed to serialize: " & ex.Message)
Throw
End Try
End Sub
И сделать десериализация, которую я использую:
myObj = CType(deserializeObject("C:\myobject.bin"), MyClass))
Где deserializeObject
- это:
Public Function deserializeObject(ByVal srcFilename As String) As Object
If File.Exists(srcFilename) Then
Dim fStream As Stream = File.OpenRead(srcFilename)
Dim deserializer As New BinaryFormatter
Dim returnObject As Object = deserializer.Deserialize(fStream)
fStream.Close()
Return returnObject
Else
Throw New ApplicationException("File not found: " & srcFilename)
End If
End Function