我有使用二进制序列化为以下类存储的数据:
[Serializable]
public abstract class BaseBusinessObject
{
private NameValueCollection _fieldErrors = new NameValueCollection();
protected virtual NameValueCollection FieldErrors
{
get { return _fieldErrors; }
set { _fieldErrors = value; }
}
...
}
在某些时候,课程更改为:
[Serializable]
public abstract class BaseBusinessObject
{
private Dictionary<string, string> _fieldErrors = new Dictionary<string, string>();
protected virtual Dictionary<string, string> FieldErrors
{
get { return _fieldErrors; }
set { _fieldErrors = value; }
}
...
}
这会导致反序列化旧数据的问题。
我的第一个想法是实现ISerializable
,但是这个类有许多属性以及数百个继承类,我也必须实现它。
我想在反序列化期间更改旧数据以匹配当前结构,或者有一种干净的方式来升级旧数据。