【发布时间】:2012-10-12 07:18:16
【问题描述】:
我遇到了与Serializing a HashSet类似的问题
我有一个成员类型为 Dictionary<String,HashSet<T>> 的类
当我用 BinaryFormatter 序列化对象,然后反序列化它时,它是空的。
我不知道如何或在哪里调用发布在here 的解决方法。
任何提示?提前致谢。
编辑: 我尝试将哈希集转换为列表,正如另一个线程中的一个 cmets 所建议的那样。
对象看起来像这样:
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。它适用于您的情况。
-
遗憾的是我不能使用另一个序列化程序,因为这是一个相当大的项目中的一个小细节。其他一切都很好地序列化
标签: c# .net serialization hashset