OK,如果我有這樣一類...序列化「這」
[serializable]
public class MyClass() : ISerializable
{
public Dictionary<string, object> Values {get; set;}
}
我知道我必須做的序列化(的答案,對於那些試圖找到一個快速的答案,是這個)...
protected MyClass(SerializationInfo info, StreamingContext context)
{
Values = (Dictionary<string, object>)info.GetValue("values", typeof(Dictionary<string, object>));
}
public void GetObjectData(SerializationInfo info, StreamingContext context)
{
info.AddValue("values", Values);
}
我的問題是我該怎麼做,而是,我想要定義一個繼承自Dictionary的類?
我走到這一步......
[serializable]
public class MyClass() : Dictionary<string, object>, ISerializable
{
public void GetObjectData(SerializationInfo info, StreamingContext context)
{
info.AddValue("me", this);
}
}
但後來我迷路。我寫不出這個...
protected MyClass(SerializationInfo info, StreamingContext context)
{
this = (MyClass)info.GetValue("me", typeof(MyClass));
}
'cos'this'is r/o。那麼,我將如何繼續?我甚至正確的實施GetObjectData()?
我不相信它一定會有所作爲,但以防萬一它,我在.NET 4.0
爲什麼要實現'ISerializable'呢?默認的序列化幾乎適用於所有的事情,我所見過的ISerializable實現中的%90都來自那些還沒有意識到的人。 – Yaur 2012-03-15 23:46:56
@Yaur a:從類似字典的東西繼承時,**是必需的**(儘管我認爲封裝是一個更好的主意);這就是說,b:我個人儘量不要過度推薦BinaryFormatter - 它有...扭曲。 – 2012-03-15 23:51:03
@Yaur。如果我不這樣做,只要嘗試反序列化類實例,就會收到異常。如果我在我的課堂上使用字典,我/有/實現ISerializable。 – 2012-03-15 23:58:09