加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 为什么我的列表没有被序列化?

发布时间:2020-12-15 21:09:32 所属栏目:百科 来源:网络整理
导读:这与 this question有关,但这一次我试图找出如何序列化字典.我有一个继承自Dictionary的类,我需要能够序列化. 序列化方法看起来像这样,基本上字典中的值集合被添加到列表中,序列化. [Serializable]public class Collection: SortedDictionaryKey,Node,ISeria
这与 this question有关,但这一次我试图找出如何序列化字典.我有一个继承自Dictionary的类,我需要能够序列化.

序列化方法看起来像这样,基本上字典中的值集合被添加到列表中,序列化.

[Serializable]
public class Collection: SortedDictionary<Key,Node>,ISerializable
{  
    public void GetObjectData(SerializationInfo info,StreamingContext context)
    {
        List<Node> Nodes = new List<Node>();
        // The "Values" mentioned here is the SortedDictionary's Values collection
        Nodes.AddRange(Values);
        info.AddValue("Nodes",Nodes,Nodes.GetType());
    }

    public Collection(SerializationInfo info,StreamingContext context)
        : base(new Key.Comparer())
    {
        List<Node> SerValues = (List<Node>)info.GetValue("Nodes",typeof(List<Node>));
        foreach (Node ThisNode in SerValues)
        {
            // This add method has been extended so that it automatically generates the key.
            Add(ThisNode);
        }
    }
}

但是,当我调用deserialize构造函数时,列表包含正确的值,只是空值.

我怀疑这是因为节点还没有被反序列化(我知道它们可以被序列化),但是我怎么能解决这个问题呢?

解决方法

您是否尝试Xml序列化/反序列化字典?这就是为什么你要实现ISerializable接口并使用SerializationInfo代替?

虽然Xml序列化程序不支持通用字典类型,但DataContractSerializer可能会这样做,也许您可??以尝试使用它吗?如果失败了,这里是一个Xml可序列化字典的实现,可能值得一看:

http://weblogs.asp.net/pwelter34/archive/2006/05/03/444961.aspx

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读