我需要在c#中的类中表示层次结构。层次结构的“叶子”节点需要类型化为"Class A“或"Class B”。
我如何实现这一点。
好的更多细节
涉及的类如下
FieldClass -它有很多属性
SegmentClass -a段是字段的集合
GroupClass -组是段或组的集合(即存在递归关系)
层次结构上的节点可以是"segments“或"groups”。因此,在根级别,这是一个集合,其中的类可以是段类型或组类型。
发布于 2010-10-21 03:44:37
这表示您的结构:
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>();发布于 2010-10-21 01:45:12
让"ClassA“和"ClassB”实现一个特定的共享接口(即:ILeafNode)。然后,您可以将您的叶子设置为ILeafNode,并将任一类类型添加到树中。
发布于 2010-10-21 01:46:59
由于没有太多关于你的确切要求的信息,我将给你两个开始工作的地方。
一种是如果你需要一个不同的子类型的数据结构,但在类型方面仍然相似,可以使用"interfaces“或"base classes”(在这种情况下是抽象类)。"Class A“和"Class B”都可以从"ISomeClass“或"SomeClassBase”派生而来,在结构上仍然是相似的。以便您可以对它们使用通用数据结构,如List或Dictionary。
如果您希望直观地显示此列表,可以在SilverLight或ASP.NET空间中查看TreeView Control或其等效项。
希望这能帮上忙,祝你好运。
https://stackoverflow.com/questions/3980705
复制相似问题