Как изменить имя XML-элемента для поля, унаследованного от базового класса, во время сериализации?
Например, у меня есть следующий базовый класс:
public class One
{
public int OneField;
}
Сериализационный код:
static void Main()
{
One test = new One { OneField = 1 };
var serializer = new XmlSerializer(typeof (One));
TextWriter writer = new StreamWriter("Output.xml");
serializer.Serialize(writer, test);
writer.Close();
}
Я получаю то, что мне нужно:
<?xml version="1.0" encoding="utf-8"?>
<One xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<OneField>1</OneField>
</One>
Теперь я создал новый класс, унаследованный от A
, с дополнительным полем и собственным именем элемента XML для него:
public class Two : One
{
[XmlElement("SecondField")]
public int TwoField;
}
Сериализационный код:
static void Main()
{
Two test = new Two { OneField = 1, TwoField = 2 };
var serializer = new XmlSerializer(typeof (Two));
TextWriter writer = new StreamWriter("Output.xml");
serializer.Serialize(writer, test);
writer.Close();
}
В результате я получаю следующий вывод:
<?xml version="1.0" encoding="utf-8"?>
<Two xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<OneField>1</OneField>
<SecondField>2</SecondField>
</Two>
Проблема в том, что я хочу изменить OneField
в этом выводе на FirstField
, не касаясь кода базового класса (потому что я тоже буду его использовать, и имена должны быть оригинальными). Как мне это сделать?
Спасибо.