2008-11-24 9 views
10

Serileştirme sırasında liste özellik etiketlerinden kaçınmak mümkün mü?Liste özelliği için XML etiketinin bastırılması

//[Serializable()] - removed, unnecessary 
public class Foo 
{ 
    protected List<FooBar> fooBars = new List<FooBar>(); 
    public virtual List<FooBar> FooBars 
    { 
     get { return fooBars; } 
     set { fooBars = value; } 
    } 
} 

// [Serializable()] - removed, unnecessary 
public class FooBar 
{ 
    public int MyProperty 
    { get; set; } 
} 

Foo (yorum hariç) verir Dizgeleştirme:

<Foo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
    <FooBars> <!-- Unwanted tag --> 
    <FooBar> 
     <MyProperty>7</MyProperty> 
    </FooBar> 
    <FooBar> 
     <MyProperty>9</MyProperty> 
    </FooBar> 
    </FooBars> 
</Foo> 

Aranıyor çıkışı:

<Foo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
    <FooBar> 
    <MyProperty>7</MyProperty> 
    </FooBar> 
    <FooBar> 
    <MyProperty>9</MyProperty> 
    </FooBar> 

+0

XML Serialization ile ilgisi [Serializable] vardır. – Cheeso

cevap

12

ekleme:

[System.Xml.Serialization.XmlElement("FooBar")] 
public virtual List<FooBar> FooBars 
{ 
    get { return fooBars; } 
    set { fooBars = value; } 
} 
içinde

Sonuçlar

<FooMain xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http:/ 
/www.w3.org/2001/XMLSchema"> 
    <FooBar> 
    <MyProperty>7</MyProperty> 
    </FooBar> 
    <FooBar> 
    <MyProperty>76</MyProperty> 
    </FooBar> 
    <FooBar> 
    <MyProperty>67</MyProperty> 
    </FooBar> 
</FooMain>