2010-12-02 6 views
1

j'ai une classe qui définit les éléments comme ci-dessous dans une classe C# Pointpersonnaliser l'ordre d'affichage des éléments en sérialisation en utilisant C#

public class Item 
{  

    public string ShortDesc {get;set;} 

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

dans mon code derrière je le code

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

Je reçois cette sortie XML quand je sérialiser l'objet

XML:

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

mais je veux que la sortie soit dans cet ordre

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

comment est-il possible d'afficher cette façon je l'ai essayé avec Order= mais il ne prend que la XMLELement

+0

(J'ai réglé le formatage, mais s'il vous plaît noter le bouton "code" dans l'éditeur; p) –

Répondre

4
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; } 
} 

Notez le [XmlArray] explicite , ce qui nous permet de spécifier le Order=. J'ai également déplacé la liste dans une propriété pour vous (qui est la norme).