Десериализовать для типа, чье пространство имен изменилось - PullRequest
6 голосов
/ 12 октября 2011

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

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

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

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

Есть предложения?

1 Ответ

1 голос
/ 12 октября 2011

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

...