Ну, несколько версий позже, ключ в словаре изменился с int на long. Теперь при десериализации старого графа объектов метод Deserialize прерывается с помощью ArgumentException и исключение «Объект типа XX не может быть преобразован в тип YY».Deserializing Dictionary с .Net BinaryFormatter
Полное исключение:
Объект типа 'System.Collections.Generic.Dictionary`2 [System.Int32, System.Collections.Generic.List`1 [XX]]' не может преобразуется в тип 'System.Collections.Generic.Dictionary`2 [System.Int64, System.Collections.Generic.List`1 [XX]]'.
Стоит отметить, что я использую класс SerializationBinder для обработки изменений типа во время выпуска.
Любая помощь, как справиться с этой ошибкой?
Вот почему не рекомендуется использовать 'BinaryFormatter' для сохраняемых данных. Я не знаю, как это исправить, поэтому я никогда не использую его для данных, которые сохраняются или передаются между машинами. Пожалуйста, укажите, что вы сделали в своем «SerializationBinder», если хотите помочь его исправить. –
Попробуйте BinarySerializer от nuget – Jeff
@Scott, в методе SerializationBinder :: BindToType, я просто переназначаю старые имена типов для новых, тех, кто изменил, переименовал и т. Д. Ничего особенного. –