我有一个Bar
类,它包含一个List<Foo>
,Foo
和Bar
都实现了ISerializable。反序列化包含列表的类<T>:为什么List最初填充了空值?
当反序列化Bar
时,List<Foo>
最初被填充(正确数量)null
s;然后在退出Bar
反序列化的过程中,调用每个Foo
的反序列化命令,用(正确反序列化的)Foo
填充List<Foo>
。
这是怎么发生的?我无法在一个测试项目中复制它:无论我尝试过什么,导致Foo
反序列化过程在之前被称为或Bar
ctor。这实际上是我想要的行为,因为我需要填充列表以便为反序列化的Bar
进行一些初始化!
任何人都有一个想法,以至于可能导致Foo
这么晚才被反序列化?谢谢!
顺便说一下,我已经能够在反序列化之后但在返回之前使用[OnDeserializedAttribute]的方法进行所需的初始化(请参阅http://msdn.microsoft.com/zh-cn/library/system.runtime。 serialization.ondeserializedattribute%28v = VS.90%29.aspx)。 – 2010-03-08 12:44:26
参见http://stackoverflow.com/questions/1097797/custom-net-serialization-doesnt-seem-to-work;尽管没有更好的答案。 – 2010-03-08 13:41:51