相关疑难解决方法(0)

XmlRootAttribute是可继承的吗?

我有一个用C#的XmlSerializer序列化的类.它标有XmlRoot属性,我想在派生类中继承此属性.

查看文档时,它没有说XmlRoot使用AttributeUsageAttribute将Inherit设置为false(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; }
}
Run Code Online (Sandbox Code Playgroud)

这不起作用,但我想要的是:

[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; }
}
Run Code Online (Sandbox Code Playgroud)

我可能会尝试将反序列化的XML InheritedClass看起来像这样:

<rootNode attributeA="abc">
    <elementB>123</elementB> …
Run Code Online (Sandbox Code Playgroud)

c# inheritance attributes xmlserializer

13
推荐指数
1
解决办法
2927
查看次数

标签 统计

attributes ×1

c# ×1

inheritance ×1

xmlserializer ×1