【发布时间】:2014-08-03 19:39:59
【问题描述】:
我整天都在寻找一种方法来实现这一目标而没有结果......
我正在尝试反序列化一个对象。当我对其进行序列化时,我有一个名为(比如说)obsoleteBool 的 bool。在新版本的类中,我删除了这个 bool,现在反序列化时出现错误(未找到字段“obsoleteBool”)。
在新旧版本的类之间添加新字段非常容易。即使不使用 [OptionalField] 属性...但是如何管理在新旧版本的类之间删除字段?
【问题讨论】:
-
我已经编辑了你的标题。请参阅“Should questions include “tags” in their titles?”,其中的共识是“不,他们不应该”。
-
实现 ISerializable。这需要时间和精力,但您将拥有更多控制权(并且您可以 - 粗略地 - 管理版本控制)。
-
你用什么序列化它?
-
我希望我的课程被用户扩展。据我了解,使用 ISerializable 将要求他们管理他们将创建的新变量的序列化。当我使用 [Serializable] 属性时,他们可以创建新变量而无需执行任何其他操作来保存它。 @ahruss:我正在使用 BinaryFormatter 进行序列化
标签: c# serialization field versioning obsolete