我在處理這個特定問題的最佳方法方面遇到了棘手的時間,並且真的很想從專家社區獲得一些指導!C#2.0包含多種類型的通用樹
比方說,我有3個班
Branch
Twig
Leaf
一個Branch
可以包含其他Branch
對象的集合,也可以包含Twig
對象的集合和Leaf
對象的集合。
A Twig
可以包含其他Twig
對象的集合,但也可以包含Leaf
對象的集合。
A Leaf
對象可以被視爲基本組件,並且不包含任何其他對象的集合。
因此,可能的是鋼結構
科
Branch Branch Branch
| | |
|_Branch |_Twig |_Leaf
| |_etc... | |_etc...
| |
|_Twig |_Leaf
| |_etc...
|
|_Leaf
枝條
Twig Twig
| |
|_Twig |_Leaf
| |_etc...
|
|_Leaf
葉
Leaf
給定一個Branch
,我想是能夠詢問任何後代Branch
,Twig
,或Leaf
對象和知道
每個派生對象有助於頂部對象的比率(該比率是上下文對於每種情況下的父母和孩子對象)。
如果特定類型的派生對象包含特定的屬性值。例如,檢查派生
Leaf
對象,看是否超過4有UnderSide
屬性值"Furry"
我也想能有選項
3.enumerate通過對象的後代水平一次是所有第一個孩子的有序列表,其次是所有第二個孩子等等(每個級別中的對象的順序無關緊要)。
- 通過對象列舉廣度方面,即第一個孩子的有序列表,如果第一個孩子有孩子,那麼第一個孩子的孩子,那麼如果該對象有孩子,那麼它是孩子。 ..then第二個孩子,等...
我首先想到的是用一個通用的樹和接口多態性,但我在工作中出細節難度 - Twig
和Leaf
對象有着一些共同的特性,但Branch
對象是非常不同的。如果我只處理一種類型的對象,它將非常簡單!這可以以類型安全的方式完成嗎?
任何幫助將不勝感激。
這是最好的解決方案。但是,我認爲在三個級別上使用「Root」,「Branch」和「Leaf」會比使用「Branch」 ,「樹枝」和「葉子」。 – 2009-09-02 15:11:36