C# 序列化列表<;T>;包含列表<;T>;
我正在尝试序列化包含非系统类型的列表 下面是我的序列化代码,它在顶层运行良好。并返回一个有效的XmlDocument,但在内部列表中似乎不包含任何内容 我环顾了整个网络,但似乎什么也没找到 非常感谢您的帮助 代码: 公共静态XmlDocument序列化XML(列表,字符串根元素) { XmlAttributeOverrides overrides=新的XmlAttributeOverrides(); XmlAttributes attr=新的XmlAttributes(); attr.XmlRoot=新的XmlRootAttribute(rootElement); 覆盖。添加(类型(列表),属性); XmlDocument xmlDoc=新的XmlDocument(); XPathNavigator nav=xmlDoc.CreateNavigator(); 使用(XmlWriter=nav.AppendChild()) { XmlSerializer ser=新的XmlSerializer(类型(列表),覆盖); 序列序列化(编写器、列表); } 返回xmlDoc; } 用于测试的代码:C# 序列化列表<;T>;包含列表<;T>;,c#,.net,generics,serialization,xml-serialization,C#,.net,Generics,Serialization,Xml Serialization,我正在尝试序列化包含非系统类型的列表 下面是我的序列化代码,它在顶层运行良好。并返回一个有效的XmlDocument,但在内部列表中似乎不包含任何内容 我环顾了整个网络,但似乎什么也没找到 非常感谢您的帮助 代码: 公共静态XmlDocument序列化XML(列表,字符串根元素) { XmlAttributeOverrides overrides=新的XmlAttributeOverrides(); XmlAttributes attr=新的XmlAttributes(); attr.XmlRo
[TestFixture]
public class BaseTesting
{
[Test]
public void test()
{
List<ListTestClass> list = new List<ListTestClass>();
for (int i = 0; i < 20; i++)
{
list.Add(new ListTestClass() { intProp = 1, stringProp = "string1", dtProp = DateTime.Now });
}
XmlDocument doc = Beyond.Base.Util.XMLUtils.SerializeToXML<ListTestClass>(list, "root");
}
}
public class ListTestClass
{
public int intProp { get; set; }
public string stringProp { get; set; }
public DateTime dtProp { get; set; }
[XmlElement("Inner",typeof(InnerListTestClass))]
public InnerListTestClass inner { get { return new InnerListTestClass() { intProp = 1, stringProp = "string1", dtProp = DateTime.Now }; } }
}
public class InnerListTestClass
{
public int intProp { get; set; }
public string stringProp { get; set; }
public DateTime dtProp { get; set; }
}
[TestFixture]
公共类基类测试
{
[测试]
公开无效测试()
{
列表=新列表();
对于(int i=0;i<20;i++)
{
添加(新的ListTestClass(){intProp=1,stringProp=“string1”,dtProp=DateTime.Now});
}
XmlDocument doc=Beyond.Base.Util.XMLUtils.SerializedXML(列表,“根”);
}
}
公共类ListTestClass
{
公共int intProp{get;set;}
公共字符串stringProp{get;set;}
公共日期时间dtProp{get;set;}
[XmlElement(“内部”,typeof(InnerListTestClass))]
公共InnerListTestClass内部{get{返回新的InnerListTestClass(){intProp=1,stringProp=“string1”,dtProp=DateTime.Now};}
}
公共类InnerListTestClass
{
公共int intProp{get;set;}
公共字符串stringProp{get;set;}
公共日期时间dtProp{get;set;}
}
XML输出:
<root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<ListTestClass>
<intProp>1</intProp>
<stringProp>string1</stringProp>
<dtProp>2011-06-07T09:43:35.1017998+01:00</dtProp>
</ListTestClass>
<ListTestClass>
<intProp>1</intProp>
<stringProp>string1</stringProp>
<dtProp>2011-06-07T09:43:35.1017998+01:00</dtProp>
</ListTestClass>
<ListTestClass>
<intProp>1</intProp>
<stringProp>string1</stringProp>
<dtProp>2011-06-07T09:43:35.1017998+01:00</dtProp>
</ListTestClass>
<ListTestClass>
<intProp>1</intProp>
<stringProp>string1</stringProp>
<dtProp>2011-06-07T09:43:35.1017998+01:00</dtProp>
</ListTestClass>
<ListTestClass>
<intProp>1</intProp>
<stringProp>string1</stringProp>
<dtProp>2011-06-07T09:43:35.1017998+01:00</dtProp>
</ListTestClass>
<ListTestClass>
<intProp>1</intProp>
<stringProp>string1</stringProp>
<dtProp>2011-06-07T09:43:35.1017998+01:00</dtProp>
</ListTestClass>
<ListTestClass>
<intProp>1</intProp>
<stringProp>string1</stringProp>
<dtProp>2011-06-07T09:43:35.1017998+01:00</dtProp>
</ListTestClass>
<ListTestClass>
<intProp>1</intProp>
<stringProp>string1</stringProp>
<dtProp>2011-06-07T09:43:35.1017998+01:00</dtProp>
</ListTestClass>
<ListTestClass>
<intProp>1</intProp>
<stringProp>string1</stringProp>
<dtProp>2011-06-07T09:43:35.1017998+01:00</dtProp>
</ListTestClass>
<ListTestClass>
<intProp>1</intProp>
<stringProp>string1</stringProp>
<dtProp>2011-06-07T09:43:35.1017998+01:00</dtProp>
</ListTestClass>
<ListTestClass>
<intProp>1</intProp>
<stringProp>string1</stringProp>
<dtProp>2011-06-07T09:43:35.1017998+01:00</dtProp>
</ListTestClass>
<ListTestClass>
<intProp>1</intProp>
<stringProp>string1</stringProp>
<dtProp>2011-06-07T09:43:35.1017998+01:00</dtProp>
</ListTestClass>
<ListTestClass>
<intProp>1</intProp>
<stringProp>string1</stringProp>
<dtProp>2011-06-07T09:43:35.1017998+01:00</dtProp>
</ListTestClass>
<ListTestClass>
<intProp>1</intProp>
<stringProp>string1</stringProp>
<dtProp>2011-06-07T09:43:35.1017998+01:00</dtProp>
</ListTestClass>
<ListTestClass>
<intProp>1</intProp>
<stringProp>string1</stringProp>
<dtProp>2011-06-07T09:43:35.1017998+01:00</dtProp>
</ListTestClass>
<ListTestClass>
<intProp>1</intProp>
<stringProp>string1</stringProp>
<dtProp>2011-06-07T09:43:35.1017998+01:00</dtProp>
</ListTestClass>
<ListTestClass>
<intProp>1</intProp>
<stringProp>string1</stringProp>
<dtProp>2011-06-07T09:43:35.1017998+01:00</dtProp>
</ListTestClass>
<ListTestClass>
<intProp>1</intProp>
<stringProp>string1</stringProp>
<dtProp>2011-06-07T09:43:35.1017998+01:00</dtProp>
</ListTestClass>
<ListTestClass>
<intProp>1</intProp>
<stringProp>string1</stringProp>
<dtProp>2011-06-07T09:43:35.1017998+01:00</dtProp>
</ListTestClass>
<ListTestClass>
<intProp>1</intProp>
<stringProp>string1</stringProp>
<dtProp>2011-06-07T09:43:35.1017998+01:00</dtProp>
</ListTestClass>
</root>
1.
string1
2011-06-07T09:43:35.1017998+01:00
1.
string1
2011-06-07T09:43:35.1017998+01:00
1.
string1
2011-06-07T09:43:35.1017998+01:00
1.
string1
2011-06-07T09:43:35.1017998+01:00
1.
string1
2011-06-07T09:43:35.1017998+01:00
1.
string1
2011-06-07T09:43:35.1017998+01:00
1.
string1
2011-06-07T09:43:35.1017998+01:00
1.
string1
2011-06-07T09:43:35.1017998+01:00
1.
string1
2011-06-07T09:43:35.1017998+01:00
1.
string1
2011-06-07T09:43:35.1017998+01:00
1.
string1
2011-06-07T09:43:35.1017998+01:00
1.
string1
2011-06-07T09:43:35.1017998+01:00
1.
string1
2011-06-07T09:43:35.1017998+01:00
1.
string1
2011-06-07T09:43:35.1017998+01:00
1.
string1
2011-06-07T09:43:35.1017998+01:00
1.
string1
2011-06-07T09:43:35.1017998+01:00
1.
string1
2011-06-07T09:43:35.1017998+01:00
1.
string1
2011-06-07T09:43:35.1017998+01:00
1.
string1
2011-06-07T09:43:35.1017998+01:00
1.
string1
2011-06-07T09:43:35.1017998+01:00
内部
属性必须具有setter才能序列化
如果你把它改成
public InnerListTestClass inner { get; set; }
它将被序列化,正如您所期望的那样
<ListTestClass>
<intProp>1</intProp>
<stringProp>string1</stringProp>
<dtProp>2011-06-07T01:57:07.1200742-07:00</dtProp>
<Inner>
<intProp>1</intProp>
<stringProp>string1</stringProp>
<dtProp>2011-06-07T01:57:07.1210743-07:00</dtProp>
</Inner>
</ListTestClass>
1.
string1
2011-06-07T01:57:07.1200742-07:00
1.
string1
2011-06-07T01:57:07.1210743-07:00
<ListTestClass>
<intProp>1</intProp>
<stringProp>string1</stringProp>
<dtProp>2011-06-07T01:57:07.1200742-07:00</dtProp>
<Inner>
<intProp>1</intProp>
<stringProp>string1</stringProp>
<dtProp>2011-06-07T01:57:07.1210743-07:00</dtProp>
</Inner>
</ListTestClass>