我想保存和恢复当前定义为 POCO 对象的一些设置,并希望保存/加载操作即使正在保存的数据格式发生更改也能正常工作,以便忽略未知数据并正确添加新数据.
我可以使用哪个框架?我知道我不能使用 XML 序列化,因为它很脆弱,一旦在数据结构中看到不匹配的元素就会中断。我可以使用什么来“正常工作”?
我想保存和恢复当前定义为 POCO 对象的一些设置,并希望保存/加载操作即使正在保存的数据格式发生更改也能正常工作,以便忽略未知数据并正确添加新数据.
我可以使用哪个框架?我知道我不能使用 XML 序列化,因为它很脆弱,一旦在数据结构中看到不匹配的元素就会中断。我可以使用什么来“正常工作”?
虽然它是 XML 并且可能无法处理所有更改,但 DataContractSeralizer 可以处理添加/删除属性。它还具有处理未知数据的回调。
http://msdn.microsoft.com/en-us/library/ms731138.aspx
您始终可以构建自己的,但这会更耗时。
您可能想尝试JSON
序列化,它可能会满足您的需求。
但是,最好的解决方案可能是实现您自己的序列化,以确保它以您需要的方式工作。这将确保以您需要的方式处理添加的任何新值。
当您说“脆弱”时,您的意思可能是“不向后兼容”或“我更改了合同,它无法处理我的更改”。
真的不是“脆弱”。更多的是“它不包含人工智能,当你改变某些东西时知道你想要什么”。
因此,您最好的选择是通过您自己的自定义序列化机制来处理它。因为那是您将输入“如果它不再存在怎么办,但我不在乎”逻辑的地方。
恕我直言,没有“只是工作”的解决方案。因为一个人的“无论什么版本,这个都必须存在”是另一个人的“我可以在这个新版本中跳过这条信息”。