除了訪問哈希表和轉換值類型時的速度問題,這真的很糟糕嗎?使用Hashtable來存儲屬性來打擊序列化版本控制
[Serializable]
public class Cheat : ISerializable
{
public Cheat() { }
public string Orange { get { return Convert.ToString(_mData["Orange"]); } set { _mData["Orange"] = value; } }
public List<int> Ints { get { return (List<int>)(_mData["Ints"]); } set { _mData["Ints"] = value; } }
#region ISerializable Members
protected Hashtable _mData = new Hashtable();
protected Cheat(SerializationInfo info, StreamingContext context)
{
_mData = (Hashtable)info.GetValue("_mData", typeof(Hashtable));
}
void ISerializable.GetObjectData(SerializationInfo info, StreamingContext context)
{
info.AddValue("_mData", _mData);
}
#endregion
}
在什麼方面?在.NET 2.0+中,當發生反序列化時,數據模型屬性的未識別的更新版本將自動被忽略。使用BinaryFormatter時,此行爲不需要代碼。 –
我不知道它還有什麼不好。這就是我問的原因。我已經閱讀了http://msdn.microsoft.com/en-us/library/ms229752(v=vs.80).aspx中有關.NET 2.0的改進和OptionValue選項,但是使用Hashtable似乎可以更容易地解決即時問題? – Jake