我有一个C#类,它是序列化到硬盘由BinaryFormatter,像这样的例子:如何重构在.NET中序列化的类?
// Version 3.0
[Serializable]
public class Person
{
public string FullName;
[OptionalField(VersionAdded=2)]
public string NickName;
[OptionalField(VersionAdded=2)]
public DateTime BirthDate;
[OptionalField(VersionAdded=3)]
public int Weight;
}
后来,我想通过一个或多个以下
的重构这一类 - 将其名称更改
- 更改其名称空间
- 据我所知道的,二进制文件只能反序列化,如果用完全相同的名称,命名空间和程序集名称一类可移动到另一个装配
。
我该如何解决这个问题?
是否有可能将反序列化映射到不同的类名,名称空间和程序集,而不会破坏Version Tolerant Serialization?
所以你的意思人应该实现ISerializable和GetObjectData()?如果反序列化程序具有不同的名称,名称空间和/或程序集,那么解序列化程序如何知道应该使用这个确切的Person类?我能否以某种方式告诉反序列化器使用哪个类? – angularsen 2010-08-23 10:17:36