5

私は次のようなクラス Node を持っています:

class Node {
    IEnumerable<Node> inputs;
}

これは基本的に単純なグラフを定義します。グラフを人間が読める形式にシリアル化したいので、通常は xml が適していると思います。しかし、XML は循環的な依存関係を考慮して作成されたわけではありません :)

だから - 私のグラフのシリアル化に行くための最良の方法は何でしょうか?

私はいくつかの方法を考えることができます:

  • XML を捨てて、独自のフォーマットを作成します。
  • XML を使用し、各ノードに一意の ID をタグ付けし、接続リストをノードとは別に保存し、ロード後に解決します

しかし、他の人も以前に同じ問題を抱えていたに違いないと思うので、もっと良い選択肢があるかもしれません. 堅実なアプローチを知っている人はいますか?

4

2 に答える 2

3

xml の場合は、id アプローチを使用します (循環しないように DTO モデルを変更します)。

オーバーロードされたコンストラクターでオプションDataContractSerializerを渡すことにより、循環オブジェクト グラフを自動的にサポートできることに注意してください。出力ほど単純ではありませんが、それでも読み取り可能です。truepreserveObjectReferencesXmlSerializer

于 2010-12-15T11:01:55.237 に答える
1

WCF DataContractSerializer に切り替えると、オブジェクト参照を保持できます (3.5 SP 1 以降)。

[DataContract(IsReference=true)]

Sowmyはここに良い記事を書いています

于 2010-12-15T11:04:45.003 に答える