我有一個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