次のツリー構造にアクセスして編集しようとしていますが、インターウェブ上で適切な方法が見つかりません。
class SimpleNode
{
string Name;
SimpleType Type;
List<SimpleList> Children;
}
class SimpleList
{
//some list-based properties
List<SimpleNode> Items;
}
以下に頼らずに、ノードを検索して編集できるようにする必要があります。
Node.Children[0].Items[0].Children[1].Items[3]
など。ツリーの要素を返す関数を介してこれを試みましたが、返された要素を編集しても実際のツリーには影響しなかったようです。さらに複雑なのは、ツリー内の異なるポイントに 2 つの同一のノードが存在することを排除したくないということです。
明らかなように、ツリー構造を使用するのはこれが初めてであり、本当に助けが必要です。
さらに調査すると (Drew によると)、複合パターンの概念、特にメソッド転送/集約リターンの概念は理にかなっています。ここでの秘訣は、ツリー内の 2 つの異なるポイントに同じ識別子 (タイプと名前) を持つ 2 つのノードがある可能性があることです。
機能しなかったコードは次のようなものでした (それはずっと前になくなっています):
Node GetNode(Type type, string name)
{ // returns node }
私は次のようなものを試しました:
Node nodeToEdit = GetNode(params);
nodeToEdit.Name = "New Name";
また
nodeToEdit.Children.Add(new Node());
しかし、それは木を取り込まないようでした。もしそうなら、私に知らせてください。