尝试使用Generic对象序列化新的XML文件

时间:2012-12-09 13:34:06

标签: c# xml file xmlserializer generic-list

我正在尝试使用序列化创建一个xml文件和一个自定义类,我得到一个异常: “生成xml文档时出错。”

我尝试了一个字符串列表,它可以工作,但不是自定义类型... 有人为什么会这么做?

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); }
    }
}

1 个答案:

答案 0 :(得分:0)

这就是诀窍:把你当前的代码包起来:

try {
    // create and use serializer
} catch(Exception ex) {
    while(ex != null) {
        Debug.WriteLine(ex.Message);
        ex = ex.InnerException;
    }
    throw;
}

XmlSerializer在无法序列化/反序列化某些内容时实际上给出了非常详细的原因 - 但它们隐藏在内部异常中。通过上述内容,您将能够看到调试输出中存在的问题。

常见嫌疑人:

  • 类型必须是完全公开的
  • type必须具有公共无参数构造函数
  • 如果实际实例是子类,则必须事先声明