1

我最近遇到了一个场景,我们的一个开发人员向我们的数据合约添加了一个未标记为数据成员的对象。我们使用 DataContractSerializer 来存储我们正在控制的硬件的配置文件。显然,序列化操作没有成功。

这发现的主要问题是配置文件在此过程中被破坏。有谁知道在尝试序列化之前确保对象图将序列化的方法?

来自序列化异常的堆栈跟踪在调用 XmlObjectSerializerContext.CheckIfTypeSerializable(..) 时失败我想知道是否有类似的东西,我可以在尝试序列化之前使用它。

我想避免必须将图形流式传输到内存然后传输到文件,但我想这会起作用......

有什么建议么?

4

1 回答 1

0

斯科特,我认为你的意思是序列化成功,但 *de*serialize 没有成功。如果您添加了一个额外的数据成员但忘记了 annonate,则序列化程序将在序列化过程中忽略它。此外,如果它在反序列化过程中看到一个额外的成员,如果您需要严格的模式有效性或要求该成员存在,它将抛出;但否则,它根本不会解析该值并继续前进。

有几种方法可以处理这个问题 - 使用 IExtensibleDataObject、需要 DataMembers、使用代理等。请参阅http://msdn.microsoft.com/en-us/library/ms731138.aspx [Data Contract Versioning] 和http:// /msdn.microsoft.com/en-us/library/ms731083.aspx [Forward-Compatible Data Contracts] 以获得更具体的指导。

希望这可以帮助!

于 2011-02-03T19:24:14.693 回答