序列化强类型对象的列表 [英] Serializing a list of strongly typed objects
问题描述
我可能已经在设计决策搞砸。相反,使用自定义对象的强类型集合中,我使用了一个泛型列表。从本质上讲,我拥有的是:
公共类AreaFields
{
[XmlArray(项目)]
[XmlArrayItem(项目)]
公开名单<&领域GT; {字段设置;得到; } [XmlAttribute]
INT编号{设置;得到; }
}公共类字段
{
[XmlAttribute]
公共字符串名称{设置;得到; }
}
在整个应用程序,我已经使用列表< AreaFields>
现在,我需要序列化列表为XML。我所希望得到的是:
< SomeXMLTag>
< AreaFields ID ='1000'>
<项目>
<项目名称=测试1/>
<项目名称=Test2的/>
< /项目>
< / AreaFields>
< AreaFields ID ='1001'>
<项目>
<项目名称=测试1/>
<项目名称=Test2的/>
< /项目>
< / AreaFields>
< / SomeXMLTag>
既然不能序列化列表与LT;>(?还是可以的我),我将不得不序列化列表的每一个项目。
例如:清单< AreaFields>名单=新名单,LT; AreaFields>();
//更多code以添加到列表
列表[0] .GetRawXML(); //一个方法,我必须序列
您将需要一个包装类;那么序列 MyWrapper
的实例来获取XML按照您的例子。
[XmlRoot(SomeXMLTag)]
公共类MyWrapper
{
[XmlElement的(AreaFields)]
公开名单< AreaFields> AreaFields {搞定;组; }
}公共类AreaFields
{
[XmlArray(项目)]
[XmlArrayItem(项目)]
公开名单<&领域GT; {字段设置;得到; } [XmlAttribute]
公众诠释ID {设置;得到; }
}公共类字段
{
[XmlAttribute]
公共字符串名称{设置;得到; }
}
I might have messed up on a design decision. Instead of using a strongly typed collection of custom objects, I have used a generic List. Essentially, what i have is:
public class AreaFields
{
[XmlArray("Items")]
[XmlArrayItem("Item")]
public List<Fields> Fields { set; get; }
[XmlAttribute]
int id { set; get; }
}
public class Fields
{
[XmlAttribute]
public string Name { set; get; }
}
Throughout the application, I have used List<AreaFields>
Now, I am in need of serializing the list into XML. What I am hoping to get is:
<SomeXMLTag>
<AreaFields id='1000'>
<Items>
<Item Name="Test1" />
<Item Name="Test2" />
</Items>
</AreaFields>
<AreaFields id='1001'>
<Items>
<Item Name="Test1" />
<Item Name="Test2" />
</Items>
</AreaFields>
</SomeXMLTag>
Since I cannot serialize List<> (or can I?), I will have to serialize every item of the list.
Ex: List<AreaFields> list = new List<AreaFields>();
// more code to add to list
list[0].GetRawXML(); //A method i have to serialize
You'll need a wrapper class; then serialize the instance of MyWrapper
to get the xml as per your example.
[XmlRoot("SomeXMLTag")]
public class MyWrapper
{
[XmlElement("AreaFields")]
public List<AreaFields> AreaFields { get; set; }
}
public class AreaFields
{
[XmlArray("Items")]
[XmlArrayItem("Item")]
public List<Fields> Fields { set; get; }
[XmlAttribute]
public int id { set; get; }
}
public class Fields
{
[XmlAttribute]
public string Name { set; get; }
}
这篇关于序列化强类型对象的列表的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!