我有一個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