Десериализация массива всегда дает массив нулей

У меня есть собственный абстрактный базовый класс с подклассами, которые я сделал сериализуемыми / десериализуемыми с помощью 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);

Это обычная проблема? По крайней мере, мне кажется, что никто не сталкивался с этим. Надеюсь, есть решение :), и если мне нужно предоставить вам дополнительную информацию / код, просто скажите мне.

Спасибо!

9
задан Ian 11 January 2011 в 11:40
поделиться