Reputation: 428
I want to serialize a tree in XNA 4.0, where each node has the children node in a member dictionary indexed by int as such:
[Serializable]
public class Node
{
private Dictionary<int, Node> children;
}
My intention is that when I serialize a specific node, all the sub-tree that has that node as root gets serialized. But when I try to test it out, it seems to have a problem serializing the dictionary, it replies with the error (simplified):
System.InvalidOperationException was unhandled
Message=There was an error reflecting type 'Baddies.Node.Node'.
InnerException: System.NotSupportedException
Message=Cannot serialize member Baddies.Nodes.Node.Children of type System.Collections.Generic.Dictionary`2[[System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089],[Baddies.Nodes.Node, Baddies, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], because it implements IDictionary.
My question is a double one. First, if the class Dictionary was serializable, would this do what I expect it to do? (that is, serialize all the sub-tree). Second, how do I go about serializing the dictionary class then?
Any and all information welcome. Thank you for your time.
Upvotes: 0
Views: 1470
Reputation: 20050
It appears that types that implement IDictionary cannot be serialized out of the box using XmlSerializer.
Read here on how to solve this: XML Serialize IDictionary types (Hashtable, DictionaryBase etc)
Upvotes: 1