我有一个自定义抽象基类,其中包含我使用 ISerializable 使其可序列化/可反序列化的子类。当我对此类的子类的单个实例进行序列化/反序列化时,一切正常。然而,当我做一个数组时,我总是在反序列化时得到一个空数组。序列化是使用 BinaryFormatter 完成的。
这些项目包含在一个:
public ObservableCollection<Trade> Trades { get; private set; }
在序列化时,这是在 SerializationInfo 参数的 GetObjectData 中完成的:
Trade[] trades = (Trade[])Trades.ToArray<Trade>();
info.AddValue("trades", trades);
在反序列化时,这也是在序列化构造函数中的 SerializationInfo 参数上完成的:
Trade[] trades = (Trade[])info.GetValue("trades", typeof(Trade[]));
foreach (Trade t in trades)
{
Trades.Add(t);
}
反序列化总是给我一个空数组,正如我之前提到的,使用这段代码可以很好地序列化和反序列化单个项目:
序列化(GetObjectData 方法):
info.AddValue("trade", Trades.First<Trade>());
反序列化(序列化构造函数):
Trade t = (Trade)info.GetValue("trade", typeof(Trade));
Trades.Add(t);
这是个常见的问题吗?至少我似乎没有发现任何其他人遇到它。希望有一个解决方案:) 如果我需要为您提供更多信息/代码,请告诉我。
谢谢!