强大的.NET序列化的最佳方法

时间:2013-05-03 14:38:13

标签: c# .net serialization persistence

我想保存和恢复当前定义为POCO对象的一些设置,并希望保存/加载操作能够正常工作,即使保存的数据格式发生更改,也会忽略未知数据和新数据正确添加。

我可以使用哪种框架?我知道我不能使用XML序列化,因为它很脆弱,一旦它看到数据结构中不匹配的元素就会中断。我可以使用什么才能“正常工作”?

3 个答案:

答案 0 :(得分:4)

虽然它是XML并且它可能无法处理所有更改,但DataContractSeralizer可以处理添加/删除属性。它还具有处理未知数据的回调。

http://msdn.microsoft.com/en-us/library/ms731138.aspx

你总是可以建立自己的,但这更耗时。

答案 1 :(得分:2)

您可能希望尝试JSON序列化,它可能会执行您需要的操作。

但是,最好的解决方案可能是实现您自己的序列化,以确保它以您需要的方式工作。这将确保添加的任何新值都以您需要的方式处理。

答案 2 :(得分:2)

当你说“脆弱”时,你可能意味着“不向后兼容”或“我改变了合同,它无法处理我的更改”。

真的不是“脆弱”。更多的是“当你改变某些东西时,它不包含人工智能知道你想要什么”。

因此,您最好的办法是通过自己的自定义序列化机制来处理它。 因为在那里你会放入“如果这不再存在,但我不关心那个”逻辑。

没有“正常工作”的解决方案,恕我直言。因为一个人的“这个版本必须存在”是另一个人的“我可以在这个新版本中跳过这条信息”。