Это относится к этому вопросу , но на этот раз я пытаюсь разобраться, как сериализовать словарь.У меня есть класс, который наследует от словаря, который я должен иметь возможность сериализации.
Методы сериализации выглядят так, в основном коллекция значений из словаря добавляется в список, который сериализуется.
[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);
}
}
}
Однако, когда вызывается конструктор десериализации, список содержит правильное количество значений, только нулевые значения.
Я подозреваю, что это потому, что узлы еще не были десериализованы (хотя я знаю, что они могут быть сериализованы), но тогда как я могу это исправить?