У меня есть класс, который я сериализую с С# XmlSerializer. Он отмечен атрибутом XmlRoot, и я хотел бы наследовать этот атрибут в производном классе.
Глядя на документацию, он не говорит, что XmlRoot устанавливает Inherit в false с атрибутом AttributeUsageAttribute (для Inherit по умолчанию используется значение true), но я получаю сообщение об ошибке при попытке десериализации моего унаследованного класса без атрибута XmlRoot ( "< rootNode xmlns = '' > не ожидалось." ).
В настоящее время работает:
[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; }
}
Это не работает, но я хочу:
[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; }
}
XML, который я могу попытаться десериализовать как InheritedClass
, выглядит следующим образом:
<rootNode attributeA="abc">
<elementB>123</elementB>
</rootNode>