Ral*_*alf 2 c# highrise xmlserializer
我正在尝试创建一个可以通过XMLSerializer序列化为XML的类.
目标XML应该看起来像这样
<subject_datas type="array">
<subject_data>
...
</subject_data>
<subject_data>
...
</subject_data>
</subject_datas>
Run Code Online (Sandbox Code Playgroud)
问题是subject_datas标记的type属性.我尝试的是将其设计为派生List并附加具有XMLAttribute属性的属性
[XmlRoot(ElementName = "subject_datas")]
public class SubjectDatas : List<SubjectData>
{
public SubjectDatas (IEnumerable<SubjectData> source)
{
this.AddRange(source);
Type = "array";
}
[XmlAttribute(AttributeName = "type")]
public string Type { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
但是因为类是Collection,所以XMLSerializer将序列化Collection中的对象而不是Collection本身.所以我的Type属性被忽略了:(
你可以使用组合而不是继承
[XmlRoot(ElementName = "subject_datas")]
public class SubjectDatas
{
[XmlElement(ElementName = "subject_data")]
public List<SubjectData> SubjectDatas2 { get; set; }
public SubjectDatas(IEnumerable<SubjectData> source)
{
SubjectDatas2= new List<SubjectData>();
this.SubjectDatas2.AddRange(source);
Type = "array";
}
private SubjectDatas()
{
Type = "array";
}
[XmlAttribute(AttributeName = "type")]
public string Type { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1251 次 |
| 最近记录: |