Сериализация XML - PullRequest
       1

Сериализация XML

2 голосов
/ 02 февраля 2012

Кто-нибудь знает, есть ли альтернатива использованию атрибутов в свойствах C # для сопоставления с узлами XML при использовании XmlSerializer?

Моя проблема в том, что у меня есть объект с именем Article, с некоторыми свойствами (например,ID, Title, Body), и я не хочу добавлять атрибуты непосредственно к нему (используемые в другом месте, и т. Д., И т. Д.) ... поэтому я создал частичный класс и заново определил свойства и добавил там атрибуты, но вскоре обнаружил, чтоВы не можете иметь повторяющиеся свойства в частичных классах.

Так что мне было интересно, если бы кто-нибудь знал, каким образом я мог бы вместо этого сопоставить свойства (аналогично n-hibernate, например).

Буду признателен за любую помощь.

Ответы [ 2 ]

4 голосов
/ 02 февраля 2012

Существует конструктор класса XmlSerializer , который позволяет передавать XmlAttributeOverrides и, таким образом, изменять поведение во время выполнения.

Цитата из документации:

Параметр overrides можно использовать для управления тем, как поля и свойства кодируются в XML.Эти настройки переопределяют любые атрибуты, которые уже существуют на объектах.Это может быть полезно, когда исходный код не может быть изменен или для одних и тех же классов требуется несколько кодировок.

0 голосов
/ 02 февраля 2012

Вы можете напрямую реализовать IXmlSerializable .Требуется еще немного кода, но у вас будет полный контроль без атрибутов.

...