2014-10-08 75 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

相关问题