У меня есть собственный абстрактный базовый класс с подклассами, которые я сделал сериализуемыми / десериализуемыми с помощью ISerializable.Когда я делаю сериализацию / десериализацию отдельных экземпляров подклассов этого класса, все работает нормально.Однако, когда я делаю их массив, я всегда получаю массив нулей при десериализации.Сериализация выполняется с помощью BinaryFormatter.
Элементы содержатся в:
public ObservableCollection<Trade> Trades { get; private set; }
При сериализации это выполняется в GetObjectData для параметра SerializationInfo:
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);
Это общая проблема?Похоже, я не нахожу ни одного случая, чтобы кто-нибудь еще прибегал к нему.Надеюсь, что есть решение :) и если мне нужно предоставить вам больше информации / кода, просто скажите мне.
Спасибо!