Десериализовать для типа, чье пространство имен изменилось
Использование.NET 4/C#...
Мне нужно десериализовать старые конфигурационные файлы, которые содержат сериализованное представление типа, скажем, ns1.X . Сериализация была сделана с использованием BinaryFormatter
,
Проблема в том, что после раунда рефакторинга тип X был перемещен в другое пространство имен, скажем, ns2.X .
Я попытался создать новый пустой тип ns1.X, производный от ns2.X, и хотя это позволяет обойти ошибку "Не удается найти тип ns1.X", все свойства в десериализованном объекте null
, Кроме того, никакие ctors не вызываются в процессе.
Какие-либо предложения?
1 ответ
Вам нужно будет использовать ISerializationSurregate, чтобы это произошло. Это не так уж сложно, и Джефф Рихтер объясняет это очень хорошо. Я рекомендую его книгу CLR Via C# 3.