Ändern des Typs einer geerbten Eigenschaft (in einen geerbten Typ)

8

mit C # Ich habe eine Klasse, die neben anderen Metainformationen den Wurzelknoten eines gerichteten Graphen enthält. Nennen wir das die Container-Klasse . Dieser Container kann in zwei verschiedenen Modi angezeigt werden: Editor-Modus und Konfigurator-Modus. Je nach Modus hat der Stammknoten einen anderen Typ NodeEdit oder NodeConfig , die beide von derselben Unterklasse erben.

%Vor%

Für den Container erstelle ich auch eine Basisklasse und erben von ihr:

%Vor%

Beim Erstellen der Klassen für Editor- und Configuratorcontainer durch Vererbung von ContainerBase möchte ich der Typ der Root-Eigenschaft werden, der spezifische (von NodeBase geerbte) Typ wie:

%Vor%

Aber ich kann den Typ einer in ContainerBase definierten Eigenschaft nicht ändern. Gibt es eine Möglichkeit, dieses Problem zu lösen? Ich kann den BaseNode-Typ verwenden und ein Element von NodeEditor wie

hinzufügen %Vor%

weil der Typ NodeEditor vom Typ BaseEditor geerbt wird, aber in der Container-Editor-Klasse möchte ich explizit nur den Typ der Root-Eigenschaft als NodeEditor zulassen. Ich könnte dies im Setter überprüfen und alle Knoten außer denen vom Typ NodeEditor ablehnen, aber ich möchte, dass die Eigenschaft vom spezifischen Typ ist, so dass ich falsche Zuordnungen bei der Kompilierung feststellen kann.

Vielen Dank im Voraus,
Frank

    
Aaginor 04.11.2011, 10:35
quelle

4 Antworten

4

Sie können es neu deklarieren:

%Vor%     
Marc Gravell 04.11.2011, 10:59
quelle
9

Verwenden Sie Generika:

%Vor%     
Blau 04.11.2011 10:40
quelle
1

Sie können die Container-Basis generisch machen:

%Vor%

In der abgeleiteten Klasse geben Sie den Typ an:

%Vor%     
Guffa 04.11.2011 10:41
quelle
0

Ich nehme an, eine gute Lösung hier wird Generika sein. Du würdest also so etwas schreiben:

%Vor%     
Artak 04.11.2011 10:42
quelle

Tags und Links