Tengo una clase que estoy serializando con C# XmlSerializer. Está marcado con el atributo XmlRoot, y me gustaría heredar este atributo en una clase derivada.¿XmlRootAttribute es heredable?
En cuanto a la documentación que no dice que los conjuntos de XmlRoot heredan a falso con AttributeUsageAttribute (Heredar se supone que por defecto a true), pero me da un error al intentar deserializar mi clase heredada sin un atributo XmlRoot (" < rootNode xmlns = '' > no se esperaba. ").
Esto funciona actualmente:
[Serializable()]
[XmlRoot("rootNode")]
public class BaseClass
{
[XmlAttribute("attributeA")]
public int A { get; set; }
}
[Serializable()]
[XmlRoot("rootNode")]
public class InheritedClass : BaseClass
{
[XmlElement("elementB")]
public int B { get; set; }
}
Esto no funciona, pero es lo que quiero:
[Serializable()]
[XmlRoot("rootNode")]
public class BaseClass
{
[XmlAttribute("attributeA")]
public int A { get; set; }
}
[Serializable()]
public class InheritedClass : BaseClass
{
[XmlElement("elementB")]
public int B { get; set; }
}
El XML que podría intentar deserializar como InheritedClass
se parece a esto:
<rootNode attributeA="abc">
<elementB>123</elementB>
</rootNode>
Respuesta completa, agradezco el fondo. ¡Gracias! –