C# 尝试使用泛型对象序列化新XML文件
我正在尝试使用serialize创建一个xml文件,其中包含一个自定义类,但遇到了一个异常: “生成xml文档时出错。” 我用一个字符串列表尝试了它,它可以工作,但不能使用自定义类型。。。 有人有idia吗?为什么C# 尝试使用泛型对象序列化新XML文件,c#,xml,file,xmlserializer,generic-list,C#,Xml,File,Xmlserializer,Generic List,我正在尝试使用serialize创建一个xml文件,其中包含一个自定义类,但遇到了一个异常: “生成xml文档时出错。” 我用一个字符串列表尝试了它,它可以工作,但不能使用自定义类型。。。 有人有idia吗?为什么 public class MyXML { List<MyClass> Mylist; public XmlSerializer serialize; public MyXML() { Mylist=new List<
public class MyXML
{
List<MyClass> Mylist;
public XmlSerializer serialize;
public MyXML()
{
Mylist=new List<MyClass>();
serialize = new XmlSerializer(typeof(List<MyClass>));
}
public void Save(List<MyClass> newList)
{
using (FileStream writer = File.OpenWrite(Directory.GetCurrentDirectory() + "/files/MyNewFile.xml"))
{ serialize.Serialize(writer, newList); }
}
}
公共类MyXML
{
列出我的清单;
公共XmlSerializer序列化;
公共MyXML()
{
Mylist=新列表();
serialize=新的XmlSerializer(typeof(List));
}
公共作废保存(列表新建列表)
{
使用(FileStream writer=File.OpenWrite(Directory.GetCurrentDirectory()+“/files/MyNewFile.xml”))
{serialize.serialize(writer,newList);}
}
}
诀窍在于:获取当前代码,并将其包装成:
try {
// create and use serializer
} catch(Exception ex) {
while(ex != null) {
Debug.WriteLine(ex.Message);
ex = ex.InnerException;
}
throw;
}
XmlSerializer在无法序列化/反序列化某些内容时,实际上会给出非常详细的原因,但它们隐藏在内部异常中。通过以上内容,您将能够看到调试输出中存在的问题
常见嫌疑犯:
- 类型必须是完全公共的
- 类型必须具有公共无参数构造函数
- 如果实际实例是子类,则必须提前声明