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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |