我在处理这个特定问题的最佳方法方面遇到了棘手的时间,并且真的很想从专家社区获得一些指导!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