Как добавить инструкции XML-сериализации без изменения класса - PullRequest
2 голосов
/ 18 октября 2008

Есть ли умный способ добавления инструкций сериализации XML без изменения сериализованного класса?

Мне не нравится сериализация по умолчанию, и я не могу изменить класс. Я думал о наследовании класса и использовании Shadows (VB.NET) для повторной реализации свойств (с инструкциями сериализации), но это приводит к большому количеству дублирующегося кода и выглядит просто ужасно.

Идеальное решение, которое я ищу, - это способ сохранить все инструкции по сериализации в отдельном файле.

Ответы [ 2 ]

3 голосов
/ 19 октября 2008

Рассматривали ли вы использование XmlAttributeOverrides?

Библиотека классов .NET Framework: класс XmlAttributeOverrides

во-первых, вы можете контролировать и расширять сериализацию объектов, найденных в DLL - , даже если у вас нет доступа к источнику ;

во-вторых, вы можете создать один набор сериализуемых классов, но сериализует объекты в несколько способов . Например, вместо сериализации членов класса экземпляр как элементы XML, вы можете сериализовать их как атрибуты XML, в результате более эффективный документ для транспортировки.

0 голосов
/ 18 октября 2008

Используйте отражение, чтобы получить значения всех свойств из класса, а затем записать их как атрибуты в XmlNode

PropertyInfo[] properties = control.GetType().GetProperties();
foreach (PropertyInfo property in properties)
{
  object o = property.GetValue(control, null);
  // write value of o.ToString() out as an attribute on a XmlNode
  // where attribute name is property.Name
}
...