层次结构

时间:2010-10-20 17:39:22

标签: c#

我需要在c#中的类中表示层次结构。 层次结构的“叶子”节点需要键入“A类”或“B类”。

我如何实现这一目标。

更多细节

所涉及的课程如下

FieldClass - 这有一堆属性

SegmentClass - 段是字段的集合

GroupClass - 一个组是一个段或组的集合(即存在递归关系)

层次结构上的节点可以是“段”或“组”。所以在根级别这是一个集合,其中类可以是段类型或组。

3 个答案:

答案 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或其等效内容。

希望有所帮助,祝你好运。