是否可以向序列化集合添加属性?

时间:2014-10-08 07:03:51

标签: c# xml serialization collections xml-serialization

有没有办法将元素和属性添加到序列化集合子类?

以下是一个例子:

[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>

1 个答案:

答案 0 :(得分: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结构。