XmlDeserialization после переименования участвующих классов - PullRequest
1 голос
/ 16 февраля 2011

У меня есть куча сериализованных объектов xml в базе данных.

Но я реорганизовал и переименовал соответствующие классы, поэтому десериализация из базы данных затруднена.

Я подумал, что, добавивтермин [XmlRoot("DB_Class_Name")] поверх переименованных классов мог бы решить проблему, но, похоже, это не так.

Есть ли способ исправить проблему, используя метки типа [XmlRoot], [XmlElement] и т. д., безпереименовывать мои классы в их старые имена классов и без написания специальной функции десериализации?

Кроме того, есть ли хорошие источники о том, что происходит под капотом при использовании xmldeserializaiton и таких меток, как [XmlRoot]?

1 Ответ

3 голосов
/ 16 февраля 2011

Во-первых, [XmlRoot] и т. Д. Не являются метками, это атрибуты.

Во-вторых, [XmlRoot] влияет только на класс, когда этот класс используется в качестве корневого элемента документа.Это не влияет, когда экземпляр этого класса используется в качестве дочернего или другого потомка.

Используйте [XmlType] в классе или [XmlElement] в свойстве, которое имеет тип класса.

...