ISerializable でシリアライズ可能/デシリアライズ可能にしたサブクラスを持つカスタム抽象基本クラスがあります。このクラスのサブクラスの単一インスタンスのシリアル化/逆シリアル化を行うと、すべて正常に動作します。ただし、それらの配列を実行すると、逆シリアル化で常に null の配列になります。シリアル化は 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);
}
逆シリアル化では常に null の配列が得られます。前述したように、次のコードで 1 つのアイテムを正しくシリアル化および逆シリアル化します。
シリアル化 (GetObjectData メソッド):
info.AddValue("trade", Trades.First<Trade>());
逆シリアル化 (シリアル化コンストラクター):
Trade t = (Trade)info.GetValue("trade", typeof(Trade));
Trades.Add(t);
これはよくある問題ですか?少なくとも他の誰かがそれに遭遇したことはないようです。解決策があることを願っています :) より多くの情報/コードを提供する必要がある場合は、教えてください。
ありがとう!