有没有一种方法可以向序列化的集合子类添加元素和属性?
给定以下类别,这是一个示例:
[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结构。