Ich weiß nicht, ob das möglich ist, aber ich versuche, die Basisklasseninstanz aus einer abgeleiteten Klasse zu bekommen. In C # kann ich das Schlüsselwort base verwenden, um auf Eigenschaften und Methoden der Basisklasse zuzugreifen (natürlich), aber ich möchte base selbst verwenden. Der Versuch, dies zu tun, führt dazu, dass "Verwendung der Schlüsselwortbasis" in diesem Kontext nicht gültig ist Fehler.
Beispielcode
%Vor% Wenn Sie mit einer Instanz der abgeleiteten Klasse arbeiten, gibt es keine base instance
.
Ein Beispiel:
Was nicht in B
möglich ist:
Sie können so etwas tun:
%Vor%Und Sie können eine andere Methode wie
hinzufügen %Vor%Und dann kannst du
%Vor% Also ist diese GetBase()
-Methode wahrscheinlich das, was Sie wollen.
Die Pointe ist: Wenn Sie eine Instanz von B
haben, erbt sie alle Eigenschaften und das nicht überschriebene Verhalten von A
, aber sie besteht nicht aus einer Instanz von B
, die ein (versteckt aber automatische) Referenz auf eine Instanz von A
. Sie können Ihre B
-Instanz in A
umwandeln, aber es bleibt eine Instanz von B
.
Nun, du stellst keinen Code für deine Frage zur Verfügung, aber ich überlasse es dir, etwas wie
zu wollen %Vor% Aber denken Sie daran, dass MyBase
wirklich vom Typ Derived
Das Problem wurde nicht so klar wie möglich erklärt. In der Regel ist es jedoch besser, eine abstrakte Basisklasse und Methoden zu verwenden und dann die erforderlichen Methoden zu überschreiben. Sie können dann in diesem Fall die base.method-Methode verwenden (andernfalls haben Sie gerade eine Instanz der abgeleiteten Klasse hochgespielt).
%Vor%}
Punkt 1: Wenn Sie die Basisklasseninstanz in der untergeordneten Klasse erstellen möchten, ist dies nicht sinnvoll. Sie haben bereits öffentliche Dinge im Kind zugänglich.
Punkt 2: Wenn Sie die untergeordnete Klasse initialisiert haben und jetzt die Basisklasse "instance" erhalten möchten, wie erhalten Sie das, wenn es nicht initialisiert ist (Weil die Basisklasseninstanz jetzt nicht im physischen Speicher vorhanden ist, und das ist nur Kindklasse Instanz dort)?
Tags und Links .net c# inheritance base-class derived-class