XmlAttributeAttribute и XmlElementAttribute

#c# #attributes #xml-serialization

#c# #атрибуты #xml-сериализация

Вопрос:

Я хотел бы объявить как XmlAttributeAttribute, так и XmlElementAttribute для свойства, чтобы десериализация xml выполнялась правильно независимо от того, определено ли свойство как элемент xml или как атрибут xml.

например, учитывая

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

любой из следующих десериализуется правильно:

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

<X Prop="XXX"/>
  

Возможно ли это?

Комментарии:

1. <Prop="XXX"/> недопустимо.. это должно быть <SomeElement Prop="XXX"/>

Ответ №1:

Вы можете ввести свойство пересылки следующим образом

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

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