2017-10-11 2 views
1

Ich modelliere eine API für eine Client-Anwendung. Als Teil davon versuche ich einen Cache zu erstellen, der die Struktur/Karte der API beim Crawlen verwaltet (ich muss diese API crawlen, und zwar genau so :()Expose Unterobjekte durch eine Eigenschaft

Also was ich machen möchte ist ein Modellobjekt wie folgt aufbauen: ich kann eine sich wiederholende Reihe von Klassen haben

page1 
    | 
    |__page2 
     | 
     |_page3 

Also, wenn jede Seite ist ein Objekt und jedes Objekt eine Eigenschaft für ein Kind enthält dann die alle wie folgt aussehen:

public class Page 
{ 
    public Page Child { get; set; } 
} 

Also page1.Child = page2, page2.Child = page3

Auf meiner Klasse, wo ich die Cache-Konstrukt i die aktuelle Seite wie möchten aussetzen:

public class Cache 
{ 
    public Page CurrentPage { get; set; } 

    public Cache(){ 
     //logic to construct cache 
    } 
    // add, delete Page logic 
} 

Also, wenn ich wie meine Current Variable laden: cache.CurrentPage = page1.Child.Child

Ich werde Holen Sie eine Werttypkopie des Kindes. Wie stelle ich stattdessen das Element frei, damit ich stattdessen mit dem ursprünglichen Objekt arbeiten kann? Die Idee hier ist, dass ich auf der aktuellen Seite des Caches arbeiten kann, ohne wirklich wissen zu müssen, wo ich im Cache bin.

+2

Warum denken Sie, dass 'Page' ein Werttyp ist? – Servy

+0

Sie scheinen hier einige inkonsistente Seiten-/Seitenprobleme zu haben. – crashmstr

+0

@crashmstr guter Fang - behoben –

Antwort

0

Ich kann direkt auf den Wert des Kindes wie folgt zugreifen.

public class Page 
    { 
     public Page Child { get; set; } 
     public string PageNumber { get; set; } 
    } 
    private static void Main() 
    { 
     var page1 = new Page {PageNumber = "1"}; 
     var page2 = new Page {PageNumber = "2"}; 
     var page3 = new Page {PageNumber = "3"}; 
     page1.Child = page2; 
     page2.Child = page3; 

     var x = page1.Child.Child.PageNumber; 

     Console.WriteLine(x); 
    } 
Verwandte Themen