未调用Constructor时显式的BinaryFormatter序列化

时间:2012-01-06 03:24:16

标签: c# .net serialization binaryformatter binary-serialization

关于我的问题的一些背景知识: 我有很多实现ISerializable的类,并且使用显式BinaryFormatter方法进行序列化: .ctor(SerializationInfo info, StreamingContext context)void GetObjectData(SerializationInfo info, StreamingContext context) 我最近发现BinaryFormatter在反序列化对象时并不总是调用构造函数。 据推测,BinaryFormatter应该是逐位将对象图复制到内存中,因此不会在'Already Constructed'对象上调用构造函数。 这对我不起作用:当调用OnDeserialized并且构造函数未运行时,我的私有成员始终为空引用。 如果我仍然可以检索由GetObjectData收集的序列化数据,则可能会解决此问题,但除了使我能够访问SerializationInfo对象的构造函数之外,我找不到任何其他内容。

我的问题,然后: 除了.ctor(SerializationInfo info, StreamingContext context)之外,有没有办法检索void GetObjectData(SerializationInfo info, StreamingContext context)期间收集的值?

有什么线索BinaryFormatter如何决定是否调用构造函数?如果我可以强迫BinaryFormatter始终使用构造函数,我相信我的问题将会得到解决。

0 个答案:

没有答案