2009-04-30 8 views
1

Ich habe derzeit eine Erweiterung Methode, die ein IEnumerable vom Typ Tab in eine hierarchische Sammlung von TabNodes konvertiert.Fließende Schnittstellen/Erweiterungsmethoden - Eine flache Liste in einen Navigationsbaum verwandeln

// If Tab has no parent its ParentId is -1 

public class Tab 
{ 
public int TabId { get; set; } 
    public string TabName { get; set; } 
    public int Level { get; set; } 
    public int ParentId { get; set; } 

} 

public class TabNode 
{ 
    public TabInfo Tab { get; set; } 
    public IEnumerable<TabNode> ChildNodes { get; set; } 
    public int Depth { get; set; } 
} 

Zum Beispiel würde die folgende gibt Ihnen eine Sammlung von TabNodes, die unter einem Elternteil sind mit tabid 32 - die maximale Höhe der Tiefen 4.

IEnumerable<Tab> tabs = GetTabs(); 

IEnumerable<TabNode> = tabs.AsNavigationHierarchy(32,4); 

Dies ist verwirrend und nicht sehr freundlich zur weiteren Verfeinerung. Was Wenn ich eine bestimmte Ebene anstelle einer ParentID angeben möchte?

Was Ich mag würde, ist, etwas zu tun wie folgt aus:

IEnumerable<TabNode> = tabs.AsNavigationHierarchy().WithStartLevel(2).WithMaxDepth(5) 

Ich bin fest, wie wie dies elegant zu tun. Kannst du mir helfen?

Dies ist meine aktuelle Funktion, die von meinen Erweiterungsmethoden aufgerufen wird (basierend auf einem Artikel, den ich auf www.scip.be gefunden habe).

Antwort

2

tabs.AsNavigationHeirachy konnte ein HerirchyQuery-Objekt zurückgeben, das Ihre nächsten Erweiterungsmethoden dann erwarten würden. Dadurch können Sie sie miteinander verketten.

+0

+1 Aber an diesem Punkt würde der Rest der Methoden wahrscheinlich Mitglieder der HierarchyQuery anstelle von Extension-Methoden sein. –

+0

Das ist, worüber ich anfangs nachgedacht habe. Leider würden meine Teamkollegen erwarten, dass es ein IEnumerable mit der gesamten Navigationsstruktur zurückgibt, wenn nur AsNavigationHierarchy() aufgerufen wurde. Aber eigentlich ist das eine gute Idee ... – kitsune

+0

Ja Chris, ich denke, es wäre eine Art normaler Builder dann – kitsune

Verwandte Themen