【发布时间】:2011-01-05 18:28:50
【问题描述】:
我有一个使用 C# 的XmlSerializer 序列化的类。它标有XmlRoot 属性,我想在派生类中继承此属性。
查看文档并没有说 XmlRoot 使用 AttributeUsageAttribute 将 Inherit 设置为 false(Inherit 应该默认为 true),但是在尝试反序列化没有 XmlRoot 属性的继承类时出现错误(“
目前有效:
[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; }
}
我可能尝试反序列化为 InheritedClass 的 XML 如下所示:
<rootNode attributeA="abc">
<elementB>123</elementB>
</rootNode>
【问题讨论】:
标签: c# inheritance attributes xmlserializer