Допустим, у меня есть класс SomeDTO, который я хочу сериализовать в основной функции:
[XmlElement(MethodCall)]
public class SomeDTO
{
[XmlElement("AllowStereo")]
bool? UseStereo {get; set;}
[XmlElement("Kg")]
int? Weight{get; set;}
}
static Main()
{
var methodCall = new SomeDTO();
methodCall.UseStereo = true;
XmlSerializer serializer = new XmlSerializer(typeof(SomeDTO));
var stream = new MemoryStream();
var writer = new StreamWriter(stream);
serializer.serialize(writer, methodCall);
//Code to display the stream
}
Как я могу повлиять на преобразование UseSecondChannel в xml?
хочу вывод вида:
<methodcall>
<member>
<name>AllowStereo<\name>
<value><boolean>1<\boolean><value>
<\member>
<\methodcall>
У нас есть сценарий использования, где мы используем xmlrpc для обмена сообщениями. Каждый DTO представляет определенный RPC. Классы из Business logic используются для заполнения DTO.
Я не смог найти способ повлиять на функциональность XmlElementAttribute нужным образом. Я ожидал найти аргумент конструктора или виртуальную функцию для переопределения.
Кроме того, я не смог найти другой связанный с Xml атрибут в пространстве имен System.Xml.Serialization, который мог бы помочь мне преобразовать простой Элемент во вложенный элемент.
DTO содержит много свойств, но в XML должны отображаться только те «set». Вес не был установлен в основной программе, поэтому не должен отображаться в XML.
Фактический результат:
<methodcall>
<AllowStereo>1><\AllowStereo>
<\methodcall>