У меня есть класс, который я сериализую с C# XmlSerializer. Он отмечен атрибутом XmlRoot, и я хотел бы наследовать этот атрибут в производном классе.Является ли XmlRootAttribute наследуемым?
Глядя на документации, это не говорит о том, что XmlRoot наборы Наследовать ложь с AttributeUsageAttribute (Наследовать предполагаются по умолчанию истины), но я получаю сообщение об ошибке при попытке десериализации моего унаследованного класса без атрибута 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>
Тщательный отклик, я ценю фон. Спасибо! –