【发布时间】:2015-05-29 16:09:30
【问题描述】:
我有一个可以随时间变化的实体类。截至目前,我用二进制序列化来序列化这个类的一个对象。但是如果我在类中添加一个新属性,我就无法反序列化之前序列化的流。我试过是否可以将BSON 与json.net 一起使用。
我需要处理这些事情:
- 序列化数据的内存占用应该很低
- 序列化和反序列化应该很快
- 需要为使用旧实体类结构序列化的数据提供向后兼容性
我考虑的一种方法是在序列化之前将对象转换为IDictionary,以便我可以将默认值设置为反序列化时不匹配的属性。虽然这很有效,但它涉及将对象转换为 IDictionary 的额外步骤。
有人遇到过这种情况吗?您使用的方法是什么?
【问题讨论】:
-
你看过Version Tolerant Serialization:msdn.microsoft.com/en-us/library/ms229752%28v=vs.110%29.aspx
-
带有类型提示的基于文本的 json 可以解决向后兼容性问题,但可能无法满足您的内存和性能需求。
-
@MikeParkhill,这正是我要找的……!
-
@yoyo 基于 json 的方法对我来说效果不佳,因为数据量很大
-
很公平,我只是想提一下。如果其他人来这里寻找有关向后兼容序列化的信息,也许它会对他们有所帮助。
标签: c# serialization