0

XNA 4.0でツリーをシリアル化したいのですが、各ノードには、intによってインデックス付けされたメンバーディクショナリ内の子ノードがあります。

[Serializable]
public class Node
{
    private Dictionary<int, Node> children;
}

私の意図は、特定のノードをシリアル化すると、そのノードをルートとして持つすべてのサブツリーがシリアル化されることです。しかし、テストしようとすると、辞書のシリアル化に問題があるようで、エラー(簡略化)で応答します。

    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.

私の質問は二重の質問です。まず、クラスDictionaryがシリアル化可能である場合、これは私が期待することを実行しますか?(つまり、すべてのサブツリーをシリアル化します)。次に、辞書クラスをシリアル化するにはどうすればよいですか?

ありとあらゆる情報を歓迎します。お時間をいただきありがとうございます。

4

1 に答える 1

1

IDictionary を実装する型は、XmlSerializer を使用してすぐにシリアル化できないようです。

これを解決する方法については、こちらをお読みください: XML Serialize IDictionary types (Hashtable、DictionaryBase など)

于 2011-07-17T16:40:59.973 に答える