【发布时间】:2011-05-10 11:41:15
【问题描述】:
我编写了一个自定义类MyClass 并用<Serializable()> 属性对其进行了标记。我的硬盘上有一组二进制文件,我使用来自MyClass 实例的BinaryFormatter 对其进行了序列化。
我最近稍微改变了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
【问题讨论】:
标签: vb.net visual-studio-2010 serialization deserialization binaryformatter