关于我的问题的一些背景知识:
我有很多实现ISerializable
并设计为使用显式BinaryFormatter
方法序列化的类:
.ctor(SerializationInfo info, StreamingContext context)
我void GetObjectData(SerializationInfo info, StreamingContext context)
最近发现BinaryFormatter
在反序列化对象时并不总是调用构造函数。据说,BinaryFormatter
应该将对象图逐位复制到内存中,因此不会调用“已构造”对象上的构造函数。这对我不起作用:我的私有成员在OnDeserialized
被调用并且构造函数没有运行时总是空引用。如果我仍然可以检索由 收集的序列化数据,则可能会解决此问题,但是除了使我可以访问该对象GetObjectData
的构造函数之外,我找不到任何东西。SerializationInfo
那么我的问题
是:除了 之外,还有什么方法.ctor(SerializationInfo info, StreamingContext context)
可以检索在 期间收集的值void GetObjectData(SerializationInfo info, StreamingContext context)
吗?
或者:
任何线索如何BinaryFormatter
决定是否调用构造函数?如果我可以强制BinaryFormatter
始终使用构造函数,我相信我的问题会得到解决。