XmlAttributeAttribute和XmlElementAttribute

时间:2011-10-12 12:22:58

标签: c# attributes xml-serialization

我想在属性上声明XmlAttributeAttribute和XmlElementAttribute,以便xml正确反序列化,无论该属性是定义为xml元素还是xml属性。

e.g。 给定

public class X
{
    [XmlElement()]
    [XmlAttribute()]        
    public string Prop
    {
        get;
        set;
    }
}

以下任一项正确反序列化:

<X>
    <Prop>XXX</Prop>
</X>

<X Prop="XXX"/>

这可能吗?

1 个答案:

答案 0 :(得分:4)

您可以引入像这样的转发属性

public class X
{
    [XmlElement()]
    public string Prop
    {
        get;
        set;
    }

    [XmlAttribute("Prop")]
     public string Prop1
    {
        get { return Prop; }
        set 
        {
             if (!string.IsNullOrEmpty(value))
             {
                  Prop = value;
             }
        }
    }
}