我有類似的問題,以Serializing a HashSet在Dictionary
序列化一個HashSet我有類型的成員。一類Dictionary<String,HashSet<T>>
當我序列與BinaryFormatter的對象,然後反序列化,它出現空。
我不知道如何,或者在哪裏打電話發佈變通here。
任何提示?提前致謝。
編輯: 我試圖將哈希集轉換爲列表,作爲其他線程建議的註釋之一。
對象看起來像這樣:
public class THashSet : HashSet<T> , ISerializable
{
public THashSet(SerializationInfo info, StreamingContext context)
{
var list = (List<T>)info.GetValue("hashset", typeof(List<T>));
foreach (T t in list)
this.Add(t);
}
public override void GetObjectData(SerializationInfo info,StreamingContext context)
{
info.AddValue("hashset", this.ToList<T>());
}
當含有THashSet對象被反序列化(和構造函數被調用),列表被正確地恢復,因爲我在調試器看到。
但串行完成後,該對象僅包含一個空的HashSet。
使用其他一些序列化程序,如[Json.Net](http://json.codeplex.com/)。它適用於你的情況。 –
可悲的是我不能使用另一個序列化器,因爲這是一個相當大的項目中的一個小細節。其他一切都很好串行我 –