Десериализовать для типа, чье пространство имен изменилось

Использование.NET 4/C#...

Мне нужно десериализовать старые конфигурационные файлы, которые содержат сериализованное представление типа, скажем, ns1.X . Сериализация была сделана с использованием BinaryFormatter,

Проблема в том, что после раунда рефакторинга тип X был перемещен в другое пространство имен, скажем, ns2.X .

Я попытался создать новый пустой тип ns1.X, производный от ns2.X, и хотя это позволяет обойти ошибку "Не удается найти тип ns1.X", все свойства в десериализованном объекте null, Кроме того, никакие ctors не вызываются в процессе.

Какие-либо предложения?

1 ответ

Вам нужно будет использовать ISerializationSurregate, чтобы это произошло. Это не так уж сложно, и Джефф Рихтер объясняет это очень хорошо. Я рекомендую его книгу CLR Via C# 3.

Другие вопросы по тегам