【发布时间】:2010-08-18 09:43:44
【问题描述】:
这与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);
}
}
}
但是,当我调用反序列化构造函数时,列表包含正确数量的值,只是空值。
我怀疑这是因为节点还没有被反序列化(我知道它们可以被序列化),但是我该如何解决这个问题呢?
【问题讨论】:
-
没有理由不应该工作。您是否尝试过单独添加节点以查看是否有效?
-
我可以,但是我将如何检索节点,因为当我将它们添加到 SerializationInfo 时它们都需要一个密钥。如果没有问题,可能还有其他一些我没有提到的影响序列化的因素。
标签: c# list serialization tree