2

次のツリー構造にアクセスして編集しようとしていますが、インターウェブ上で適切な方法が見つかりません。

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());

しかし、それは木を取り込まないようでした。もしそうなら、私に知らせてください。

4

1 に答える 1