【问题标题】:Try serialize new XML file with Generic object尝试使用通用对象序列化新的 XML 文件
【发布时间】:2012-12-09 13:34:05
【问题描述】:

我正在尝试使用序列化和自定义类创建一个 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); }
    }
}

【问题讨论】:

  • 请显示我的班级,是空班吗?
  • 您的自定义类是否标记为可序列化?
  • @AntonioBakula 它不需要; XmlSerializer 不检查那个

标签: c# xml file xmlserializer generic-list


【解决方案1】:

诀窍是:获取当前代码并将其包装:

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

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

通常的嫌疑人:

  • 类型必须是完全公开的
  • 类型必须有一个公共的无参数构造函数
  • 如果实际实例是子类,则必须提前声明

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-07-19
    • 2014-12-19
    • 1970-01-01
    • 1970-01-01
    • 2010-11-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多