2

关于我的问题的一些背景知识: 我有很多实现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始终使用构造函数,我相信我的问题会得到解决。

4

0 回答 0