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
Tags und Links c# architecture class-design