У меня есть массив элементов, которые мне нужно сериализовать с помощью XmlSerializer. Проблема у меня в том, что у меня есть 2 производных класса, и их сериализация, чтобы они имели имя элемента общей базы, похоже, не работает.
Итак, как должен выглядеть XML:
<Root>
<Base> foo </Base>
</Root>
Вместо этого я получаю
<Root>
<Derived1> foo </Derived1>
</Root>
Код для массива элементов, который я сериализую, -
private object[] m_nodes;
[System.Xml.Serialization.XmlElementAttribute("Base", typeof(Derived1)]
[System.Xml.Serialization.XmlElementAttribute("Base", typeof(Derived2)]
public object[] Nodes
{
get
{
return this.m_nodes;
}
set
{
this.m_nodes = value;
}
}
С помощью приведенного выше кода я получаю ошибку отражения от узлов. Если я изменю «Base» в обоих атрибутах XmlEelementAttributes на «Derived1» и Derived2 », это будет работать, но имя элемента будет неправильным.
[System.Xml.Serialization.XmlInclude(typeof(Derived1))]
public abstract class Base
{
public Base()
{
}
}
[System.SerializableAttribute()]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)]
public class Derived1: Base
{
public Derived1()
{
}
}
Любая помощь очень ценится. Спасибо.