我正在使用BinaryFormatter
序列化存储在System::Collections::Generic::List<A^>^
中的类A
的对象集合。我添加了[Serializable]
标签,并在类A
(均为GetObjectData
和特殊构造函数)中实施了ISerializable
。反序列化时,我发现该列表是反序列化的,并包含与序列化相同数量的元素。但是,这些元素中的每一个都是空引用。自定义.NET序列化似乎不起作用
我检查了抛出的异常,并确定它不是这种情况。我已经检查确保在反序列化期间A(SerializationInfo ^info, StreamingContext context)
形式的特殊构造函数被称为正确的次数,但是这些重新构造的对象是从反序列化集合中引用的而不是。
我也用array<A^>^
取代了System::Collections::Generic::List<A^>^
,我仍然得到相同的结果。该数组具有正确数量的元素,但每个元素都是空引用。
任何人看过类似的问题?任何线索?
示例破碎的代码对于这类问题总是很方便 – 2009-07-08 12:39:54
在您的GetObjectData方法中,您是否在列表中调用ToArray()?当我试图过度考虑序列化过程并得到同样的行为时,我犯了过去的错误。 – Kleinux 2009-07-08 12:54:51