我正在寻找访问和编辑以下树结构,但在互联网上找不到好方法。
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]
之类的。我通过一个返回树元素的函数尝试了这个,但是编辑返回的元素似乎并没有影响实际的树。更复杂的是,我不想排除两个相同的节点存在于树中的不同点。
很明显,这是我第一次使用树形结构,并且真的需要一些帮助。
经过进一步调查(根据 Drew),复合模式概念是有意义的,尤其是方法转发/聚合返回概念。这里的技巧是我可能在树的两个不同点有两个具有相同标识符(类型和名称)的节点。
不起作用的代码类似于(它早已不复存在):
Node GetNode(Type type, string name)
{ // returns node }
我试过类似的东西:
Node nodeToEdit = GetNode(params);
nodeToEdit.Name = "New Name";
或者
nodeToEdit.Children.Add(new Node());
但它似乎没有吸收树。如果应该有,请告诉我,因为我一定错过了什么。