有没有一种方法可以向序列化的集合子类添加元素和属性?

给定以下类别,这是一个示例:

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

最佳答案

XmlSerializer而言,要么是集合x要么是数据对象。不是都。

但是,您可以执行以下操作:

[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结构。

09-07 00:50