2010-10-20 215 views
0

我有一個需求來表示c#中的類中的層次結構。 層次結構的「葉」節點需要鍵入爲「A類」或「B類」。層次結構

我該如何做到這一點。是

確定更詳細

涉及的類如下

FieldClass - 這有一堆屬性

SegmentClass - 一個段是字段

group類的集合 - 的基團是分段或組的集合(即存在遞歸關係)

分層上的節點hy可以是「段」或「組」。所以在根級這個集合的類可以是類型段或組。

+7

您可以優化你的問題一點,舉個例子左右? – Onkelborg 2010-10-20 17:41:50

回答

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>(); 
4

使「ClassA」和「ClassB」實現特定的共享接口(即:ILeafNode)。然後,您可以創建您的葉子ILeafNode並將任何類類型添加到樹中。

+1

是通用接口或通用基類(通常是抽象類作爲A類和B類的基類),然後可以將葉節點聲明爲抽象基類的一種類型 – 2010-10-20 17:52:59

0

由於關於您確切的要求沒有太多的信息,我會給你兩個開始工作的地方。

如果您需要具有不同子類型的數據結構,但在使用「interfaces」或「base classes」(在本例中爲抽象類)進行打字時仍然類似,則應該這樣做。 「A類」和「B類」都可以從「ISomeClass」或「SomeClassBase」派生,並且在結構上仍然相似。以便您可以使用通用數據結構(如List或Dictionary)。

如果您想直觀顯示此列表,您可以查看Silverlight或ASP.NET空間中的TreeView Control或其等價物。

希望有所幫助,祝你好運。