2014-10-08 65 views
2

有沒有辦法將元素和屬性添加到序列化的集合子類?是否可以向序列化集合添加屬性?

下面是一個例子,給出下面的類:

[XmlRoot("MyTs")] 
public class MyCollection : HashSet<MyT> 
{ 
    [XmlAttribute] 
    public string Name { get; set; } 

    //[XmlElement] 
    public string Description { get; set; } 
} 

的序列化的XML並沒有包含附加元素和屬性。有沒有辦法添加它,它仍然使用序列化類作爲HashSet的子類?

對於上面的例子,我想下面的XML:

<?xml> 
<MyTs name="name"> 
    <MyT/> 
    <MyT/> 
    <MyT/> 
    <Description>Some long verbal rubbish</Description> 
</MyTs> 

回答

3

XmlSerializer,東西要麼集合XOR的數據對象。不是都。

你可以,但是,這樣做:

[XmlRoot("MyTs")] 
public class MyRoot 
{ 
    [XmlAttribute] 
    public string Name { get; set; } 

    //[XmlElement] 
    public string Description { get; set; } 

    private readonly HashSet<MyT> items = new HashSet<MyT>(); 
    [XmlElement("MyT")] 
    public HashSet<MyT> Items {get { return items;}} 
} 

,這將有你想要的XML結構。

+0

我猜* * xor *是一個錯字,你的意思是*或*不是嗎? – 2014-10-08 07:24:02

+3

@SriramSakthivel它是故意的;我從「或」(包含它的地方)的編程/數學使用中消除了「或」(它往往是排他性的)的隨意對話用法。這個「或」意味着排他性的意義:又名「xor」 – 2014-10-08 07:25:34

相關問題