Я написал собственный класс MyClass
и пометил его атрибутом <Serializable()>
.У меня на жестком диске есть набор двоичных файлов, которые я сериализовал с использованием BinaryFormatter
, полученных из экземпляров MyClass
.
. Недавно я немного изменил структуру MyClass
(добавил несколькосвойства, удалил некоторые свойства, изменил несколько методов и т. д.).
Что происходит, когда я пытаюсь десериализовать существующие объекты в этот измененный класс с помощью приведенного ниже кода? Я пробовали не было выдано ошибку или что-то - но, конечно, он не может десериализовать должным образом, когда класс изменился?Есть ли способ получить полезную информацию из сериализованных файлов, хотя я обновил класс?
Спасибо.
Вот код, который я использую для выполненияСериализация:
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