我正在尋找訪問和編輯以下樹結構,並找不到在interwebs上的好方法。動態自定義樹訪問
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]
等。我試圖通過返回樹元素的函數來實現,但編輯返回的元素似乎並沒有影響實際的樹。增加複雜性的是,我不想排除兩個相同的節點存在於樹中的不同點。
很明顯,這是我第一次用樹結構,真的可以使用一些幫助。
經過進一步調查(根據德魯),複合模式的概念是有道理的,特別是方法轉發/聚合返回的概念。這裏的訣竅是我可能有兩個節點具有相同的標識符(類型&名稱)在樹中的兩個不同點。
,沒有工作的代碼是類似的東西(它早已不復存在):
Node GetNode(Type type, string name)
{ // returns node }
我想是這樣的:
Node nodeToEdit = GetNode(params);
nodeToEdit.Name = "New Name";
或
nodeToEdit.Children.Add(new Node());
但它沒似乎沒有在樹上。如果它應該有,讓我知道,因爲我一定錯過了什麼。
是元素類還是結構? – SWeko
你能詳細說明'edit'是什麼意思嗎?你究竟需要做什麼? –
這被稱爲[Composite Pattern](http://en.wikipedia.org/wiki/Composite_pattern)。我建議你閱讀它然後擴展你的問題。 –