Как передать массив атрибут во время сериализации в C #?

Я пытаюсь создать C #, который создает такой фрагмент XML.

<device_list type="list">
    <item type="MAC">11:22:33:44:55:66:77:88</item>
    <item type="MAC">11:22:33:44:55:66:77:89</item>
    <item type="MAC">11:22:33:44:55:66:77:8A</item>
</device_list>

Я думал использовать что-то вроде этого:

[XmlArray( "device_list" ), XmlArrayItem("item")]
public ListItem[] device_list { get; set; }

в качестве свойства с этим объявлением класса:

public class ListItem {
    [XmlAttribute]
    public string type { get; set; }

    [XmlText]
    public string Value { get; set; }
}

Что дает мне внутреннюю сериализацию, но я не знаю, как применить type = " list " атрибут device_list выше.

Я думаю (но не уверен, как написать синтаксис), что мне нужно сделать:

public class DeviceList {
    [XmlAttribute]
    public string type { get; set; }

    [XmlArray]
    public ListItem[] .... This is where I get lost
}

Обновлено на основе ответов Дейва

public class DeviceList : List<ListItem> {
    [XmlAttribute]
    public string type { get; set; }
}

public class ListItem {
    [XmlAttribute]
    public string type { get; set; }

    [XmlText]
    public string Value { get; set; }
}

, и в настоящее время используется:

[XmlArray( "device_list" ), XmlArrayItem("item")]
public DeviceList device_list { get; set; }

И тип, в то время как объявлен в коде следующим образом:

device_list = new DeviceList{type = "list"}
device_list.Add( new ListItem { type = "MAC", Value = "1234566" } );
device_list.Add( new ListItem { type = "MAC", Value = "1234566" } );

Не показывает тип при сериализации. Это результат сериализации:

<device_list>
  <item type="MAC">1234566</item>
  <item type="MAC">1234566</item>
</device_list>

Похоже, я все еще что-то упускаю ...

16
задан jcolebrand 9 January 2012 в 15:46
поделиться