我正在/如此序列化一个对象:
public class myClass : ISerializable { public Listvalue; public myClass(SerializationInfo info, StreamingContext context) { this.value = (List )info.GetValue("value", typeof(List )); } void ISerializable.GetObjectData(SerializationInfo info, StreamingContext context) { info.AddValue("value", value, typeof(List )); } }
列表中的对象具有Serializable属性.序列化时,不会抛出任何错误,列表永远不会为空,但是当反序列化我的所有列表都为空时,我不知道为什么.
我将此标记为CQ的回答.我能够生成一个小的测试应用程序,它正确地使用我正在尝试使用的对象进行序列化/反序列化但我仍然无法让它在我的生产代码中工作,但我怀疑它是小的我我失踪了.
当你说你的列表为null时,你的意思是列表本身是null,还是填充为null entires?如果是后者,那么这是一个已知的.Net问题:请看我对同一问题的疑问.
基本上,List
s只在被去序列化时才被初始化; 它们包含的对象仅在反序列化对象图后进行反序列化.解决这个问题的一种方法是在方法中放置任何需要它们的代码OnDeserialized
,或者在方法中放置一个代码[OnDeserializedAttribute]
.请参阅MSDN.