我有一个课程,我正在使用C#的序列号XmlSerializer。它标有XmlRoot属性,我想在派生类中继承此属性。XmlRootAttribute是可继承的吗?
查看文档,它并没有说XmlRoot设置继承为假使用AttributeUsageAttribute(继承应该默认为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>
彻底的回应,我欣赏背景。谢谢! – 2010-01-16 03:30:32