首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >层次结构

层次结构
EN

Stack Overflow用户
提问于 2010-10-21 01:39:22
回答 3查看 269关注 0票数 0

我需要在c#中的类中表示层次结构。层次结构的“叶子”节点需要类型化为"Class A“或"Class B”。

我如何实现这一点。

好的更多细节

涉及的类如下

FieldClass -它有很多属性

SegmentClass -a段是字段的集合

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

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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-10-21 03:44:37

这表示您的结构:

代码语言:javascript
复制
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列表实例化该树:

代码语言:javascript
复制
var rootLevel = new List<IGroupNode>();
票数 1
EN

Stack Overflow用户

发布于 2010-10-21 01:45:12

让"ClassA“和"ClassB”实现一个特定的共享接口(即:ILeafNode)。然后,您可以将您的叶子设置为ILeafNode,并将任一类类型添加到树中。

票数 4
EN

Stack Overflow用户

发布于 2010-10-21 01:46:59

由于没有太多关于你的确切要求的信息,我将给你两个开始工作的地方。

一种是如果你需要一个不同的子类型的数据结构,但在类型方面仍然相似,可以使用"interfaces“或"base classes”(在这种情况下是抽象类)。"Class A“和"Class B”都可以从"ISomeClass“或"SomeClassBase”派生而来,在结构上仍然是相似的。以便您可以对它们使用通用数据结构,如List或Dictionary。

如果您希望直观地显示此列表,可以在SilverLight或ASP.NET空间中查看TreeView Control或其等效项。

希望这能帮上忙,祝你好运。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3980705

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档