【发布时间】:2011-01-14 19:00:54
【问题描述】:
我有一堆简单的实体实例,我已经序列化到一个文件中。将来,我知道这些实体的结构(即,也许我会将Name 重命名为Header 什么的)。问题是,我不想丢失保存在所有这些旧文件中的数据。正确的方法是什么
- 将旧实体中的数据加载到新实体中
- 升级旧文件,以便它们可以用于新实体
注意:我认为我坚持使用二进制序列化,而不是 xml 序列化。
提前致谢!
编辑:所以我对我所描述的案例有一个答案。我可以使用 dataContractSerializer 并执行类似的操作
[DataMember("bar")]
private string foo;
并更改代码中的名称并保留用于序列化的相同名称。但是以下其他情况呢:
- 原实体有新成员可以序列化
- 删除了原始实体中的一些序列化成员
- 一些成员实际上在功能上发生了变化(假设原始类有一个 FirstName 和 LastName 成员,并且它已经被重构为只有一个 FullName 成员,它结合了两者)
为了处理这些,我需要某种解释器/翻译器反序列化类,但我不知道应该使用什么
【问题讨论】:
标签: c# serialization refactoring model domain-driven-design