我已經使用二進制序列爲下面的類存儲的數據:如何反序列化已更改類型的舊數據?
[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
,但這個類有許多屬性以及數百個繼承類,我也必須實現這個類。
我想在反序列化期間更改舊數據以匹配當前結構,或者有一個乾淨的方式來升級舊數據。
這爲我的需求提供了最現實的方法,但我最終走向了另一條路線。 – ramnik 2009-08-11 20:22:22