【发布时间】:2011-01-24 22:35:13
【问题描述】:
我有一个类Bar,其中包含一个List<Foo>,Foo 和Bar 都实现了ISerializable。
在反序列化Bar 时,List<Foo> 最初填充(正确数量的)nulls;然后在退出Bar 反序列化ctor 时,会调用每个Foo 的反序列化ctor,用(正确反序列化的)Foos 填充List<Foo>。
为什么会这样?我无法在测试项目中复制它:无论我尝试过什么,都导致 Foo 反序列化 ctor 被称为 在 Bar ctor 之前。这实际上是我想要的行为,因为我需要填写列表以便为反序列化的 Bar! 进行一些初始化!
任何人都知道是什么导致Foos 这么晚才反序列化?谢谢!
【问题讨论】:
-
顺便说一句,我已经能够在反序列化之后但在返回之前使用带有 [OnDeserializedAttribute] 的方法进行所需的初始化(请参阅msdn.microsoft.com/en-us/library/…)。
-
另见stackoverflow.com/questions/1097797/…;虽然那里没有更好的答案。
标签: c# list serialization