【问题标题】:Can a DataContractSerializer be setup to ignore errors in a file rather then just fail entirely?可以将 DataContractSerializer 设置为忽略文件中的错误,而不是完全失败吗?
【发布时间】:2011-03-26 03:15:49
【问题描述】:

我正在使用 DataContractSerializer 将构成树结构的大量不同类保存到 XML 文件中。我正处于编写这个软件的初始阶段,所以在这一点上,所有不同的组件都发生了很大的变化。然而,每次我对课程进行更改时,我最终都会破坏我的程序打开以前保存的文件的能力。

如果缺少组件,我的树结构仍然可以正常工作。有什么方法可以告诉 DataContractSerializer 跳过反序列化有问题的数据并继续,而不是在遇到第一个问题时退出?

我知道一个答案是编写我自己的序列化类,但我宁愿不花时间这样做。我希望仍然能够利用 DataContractSerializer,但不是全有或全无的情况。

【问题讨论】:

    标签: c# .net serialization datacontractserializer backwards-compatibility


    【解决方案1】:

    我认为您正在寻找的是 IExtensibleDataObject。这样,任何意外的元素都会被读入内部维护的名称-值字典,甚至可以在以后序列化回来。请参阅以下资源以获取帮助。

    Blog post -- WCF Extensibility – Other Serialization Extensions

    Forward-Compatible Data Contracts

    Data Contract Versioning

    【讨论】:

    • 这里有同样的问题。这是个好主意,我尝试了 IExtensibleDataObject,但它似乎不起作用。可能取决于序列化程序,我的是 json,它可能完全忽略了这一点。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-17
    • 1970-01-01
    • 1970-01-01
    • 2010-09-07
    • 2012-08-14
    • 1970-01-01
    相关资源
    最近更新 更多