[英]C# List<> to xml
调用
List<PC> _PCList = new List<PC>();
...add Pc to PCList..
WriteXML<List<PC>>(_PCList, "ss.xml");
功能
public static void WriteXML<T>(T o, string filename)
{
string filePath= Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "\\Genweb2\\ADSnopper\\" + filename;
XmlDocument xmlDoc = new XmlDocument();
XPathNavigator nav = xmlDoc.CreateNavigator();
using (XmlWriter writer = nav.AppendChild())
{
XmlSerializer ser = new XmlSerializer(typeof(List<T>), new XmlRootAttribute("TheRootElementName"));
ser.Serialize(writer, o); // error
}
File.WriteAllText(filePath,xmlDoc.InnerXml);
}
内在的例外
无法将类型为'System.Collections.Generic.List
1[PC]' to type 'System.Collections.Generic.List
1 [System.Collections.Generic.List`1 [PC]]'。
请帮忙
问题在于线路
XmlSerializer ser = new XmlSerializer(typeof(List<T>), ...
您的T
已经是List<PC>
,并且您正在尝试创建typeof(List<T>)
,它将转换为typeof(List<List<PC>>)
。 只需将其改为typeof(T)
。
它应该是
typeof(T)
代替
List<T>
XmlSerializer ser = new XmlSerializer(typeof(T), new XmlRootAttribute("TheRootElementName"));
代码中的这一行导致问题
XmlSerializer ser = new XmlSerializer(typeof(List<T>),
它创建的列表列表比不需要
XmlSerializer ser = new XmlSerializer(typeof(T),
要么你做了以上改变,要么做以下改变
您需要更改签名的方法有问题
public static void WriteXML<T>(List<T> o, string filename)
并调用方法如下
WriteXML<PC>(_PCList, "ss.xml");
通过执行上述更改可能会解决您的问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.