我编写了一个自定义类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