2015-10-01 2 views
0

Я использую XmlSerializer для десериализации XML-документа в некоторые объекты класса. Есть ли способ десериализации атрибутов узла в словарь ключей/значений вместо того, чтобы называть свойства для каждого атрибута? Пример:Deserializing xml attributes

public class Panel { 

    public Dictionary<string, string> AllAttributes {get;set;} 

    [XmlElement("image", typeof(Image))] 
    [XmlElement("panel", typeof(Panel))] 
    public object[] Items { get; set; } 

} 
+0

Возможный дубликат [Как десериализации элемент со списком атрибутов в C#] (http://stackoverflow.com/questions/32884364/how-to-deserialize-element-with-list-of- attributes-in-c-sharp) – dbc

+0

Ответ на [Как десериализовать элемент со списком атрибутов в C#] (https://stackoverflow.com/questions/32884364/how-to-deserialize-element-with-list-of -attributes-in-c-sharp/32886092 # 32886092) демонстрирует преобразование словаря 'в произвольный список атрибутов. – dbc

ответ

0

У вас есть два варианта:

  1. Реализовать свой собственный сериалайзер.

  2. Реализовать функцию отображения:

    • Использование XmlSerializer для десериализации временной переменной (например var temp) вместо того, чтобы непосредственно в классе.
    • Вызвать функцию сопоставления, передав ей временную переменную temp. Эта функция создает новый экземпляр вашего класса Panel, затем перебирает объекты temp и сопоставляет их этому экземпляру и, наконец, возвращает новый экземпляр.