настроить порядок отображения элементов при сериализации с помощью C # - PullRequest
1 голос
/ 02 декабря 2010

У меня есть класс, который определяет элементы, как показано ниже в классе C # Item

public class Item
{       

    public string ShortDesc {get;set;}

    [XmlArrayItem(ElementName="category")]
    public List<string> categories = new List<string>();
    public string SubType{get;set;}
}

в моем коде позади. У меня есть этот код

Item() itm = new Item();
itm.SubType = "Applications";
itm.categories.Add("Category1");
itm.categories.Add("Category2");
itm.categories.Add("Category3");
itm.ShortDesc="Short Description";

Я получаю этот вывод XMLкогда я сериализую объект

XML:

<subtype>Applications</subtype>
<shortDesc>Short Description</shortDesc>
<categories>
      <category>Category1</category>
      <category>Category2</category>
      <category>Category3</category>
</categories>

, но я хочу, чтобы выходные данные были в следующем порядке

<subtype>Applications</subtype>
<categories>
      <category>Category1</category>
      <category>Category2</category>
      <category>Category3</category>
</categories>
<shortDesc>Short Description</shortDesc>

как это можно отобразить таким образом, япробовал с Order= но требуется только до XMLELement

1 Ответ

4 голосов
/ 02 декабря 2010
public class Item
{
    [XmlElement("shortDesc", Order=2)]
    public string ShortDesc { get; set; }

    private readonly List<string> categories = new List<string>();
    [XmlArray("categories", Order = 3), XmlArrayItem("category")]
    public List<string> Categories { get { return categories; } }

    [XmlElement("sub-type", Order = 1)]
    public string SubType { get; set; }
}

Обратите внимание на явное [XmlArray], которое позволяет нам указать Order=. Я также переместил список в собственность для вас (что является нормой).

...