我需要在c#中的类中表示层次结构。 层次结构的“叶子”节点需要键入“A类”或“B类”。
我如何实现这一目标。
更多细节
所涉及的课程如下
FieldClass - 这有一堆属性
SegmentClass - 段是字段的集合
GroupClass - 一个组是一个段或组的集合(即存在递归关系)
层次结构上的节点可以是“段”或“组”。所以在根级别这是一个集合,其中类可以是段类型或组。
答案 0 :(得分:4)
使“ClassA”和“ClassB”实现特定的共享接口(即:ILeafNode
)。然后,您可以创建叶子ILeafNode
并将任何类类型添加到树中。
答案 1 :(得分:1)
这代表你的结构:
interface IGroupNode
{ }
class Group : IGroupNode
{
List<IGroupNode> Children { get; set; }
}
class Segment : IGroupNode
{
List<Field> Fields { get; set; }
}
class Field
{
bool myProperty { get; set; }
}
可以使用IGroupNodes列表实例化树:
var rootLevel = new List<IGroupNode>();
答案 2 :(得分:0)
由于没有很多关于你的具体要求的信息,我会给你两个起点。
如果您需要具有不同子类型的数据结构,但在键入时仍然类似于使用“interfaces”或“base classes”(在本例中为抽象类)。 “A类”和“B类”都可以来自“ISomeClass”或“SomeClassBase”,并且在结构上仍然相似。这样您就可以使用通用数据结构,例如List或Dictionary。
如果您希望以可视方式显示此列表,可以在SilverLight或ASP.NET空间中查看TreeView Control或其等效内容。
希望有所帮助,祝你好运。