我有一个与我的应用程序关联的自定义文件类型,我通过简单地将类实例序列化到文件来保存它。
我希望能够通过向类添加更多属性来升级我的应用程序,也许还可以删除属性。我怎样才能让旧版本的应用程序与新文件一起使用——无论它可以得到什么,更重要的是,我怎样才能让新版本的应用程序使用旧文件?有没有实现这个目标的通用做法?
我在第一个版本发布之前问这个问题- 如何使文件类型易于升级?
(谷歌搜索遇到了很多“噪音”。)
我认为有两种方法
也许您应该查看 Protocol Buffers 的 C# 实现。它是由 google (http://code.google.com/p/protobuf-net/) 开发的一种序列化类型,它使用 id 进行属性识别。因此,您序列化的数据不受属性名称等绑定。
正如您在第一个版本发布之前所问的那样,我及时告诉您:从长远来看,您不会对 BinaryFormatter 感到满意。我认为您应该将存储对象模型与“操作对象”分开。
仅序列化程序的运行时状态是一种简单的序列化方法,但它可以防止再次对这些对象进行重大更改。
我认为 proto-buf 很好,因为版本控制路径非常清晰。此外,XmlSerializer 序列化类也很好,因为它们是可读的。