4

以下を含む単純なツリー構造を取得しました

public class MyTree {
 public MyTree Parent { get; set;}
 public List<MyTree> Children {get; set;}
[...]
}

現在、クラスははるかに複雑ですが、これは私の問題にとって重要な部分だと思います。そのコードはかなり古く、私が維持しなければならないプロジェクトの多くの領域で使用されているため、完全な構造を変更することはできません。

私の主な問題は、そのオブジェクトをシリアル化できないことです。(ルートオブジェクトからシリアル化を開始します)次のメッセージが表示されます。

MyTreeタイプのオブジェクトのシリアル化中に循環参照が検出されました

私が子供と親を接続しているので、なぜこれが起こるのかは非常に明白なようです。

しかし、どうすればその問題を解決できますか?たとえば、親プロパティのシリアル化を無効にできますか?

4

1 に答える 1

3

親をシリアル化しないアイテムとしてマークします(XmlIgnoreSoapIgnore、またはNonSerialized)。そこの違いについて確認してください。

あなたの場合、子を追加しようとした後、xmlに親を追加します。各子には親へのリンクがあり、シリアライザーは親のシリアル化を再試行します。

于 2012-06-19T13:08:41.213 に答える