Gibt es etwas, das ich in /*???*/
(und irgendwo sonst in firstclass
) setzen kann, damit es den Typ der Klasse zurückgibt, die es aufruft, ohne es in jeder Klasse zu überschreiben, die erbt die Methode und ohne Präfix mit (secondclass)
bei jeder Verwendung. Etwas, das im Grunde bedeutet this.GetType()
?Inherited-Methode mit Rückgabetyp der Klasse es ist
public class firstclass
{
private static /*???*/ current;
public static /*???*/ modifycurrent()
{
/*do stuff to current*/
return current;
}
}
public class secondclass : firstclass
{
//nothing concerning the above
}
//usage
secondclass a = new secondclass();
secondclass b = a.modifycurrent(); //<--no cast here
Das Ziel ist, für jede Instanz von secondclass
secondclass
eine Variable vom Typ zu teilen. Und wenn ich eine dritte, vierte und fünfte Klasse erben, die von firstclass
erben, muss ich nicht alle diese Methoden neu schreiben (das sind exakte Spiegelungen davon, was in firstclass
ist, außer dass der Rückgabetyp von modifycurrent()
anders ist). Ein Beispiel dafür ist, dass jede Art von Formular die zuvor geöffnete Instanz von sich selbst verfolgt.
modifycurrent ist statisch, so dass Sie es nicht durch Klasseninstanz aufrufen können ... sowieso, was Sie fragen, ist komisch, können Sie erklären, was Sie erreichen möchten? –
a und b sind zweite Klasse? es gibt überhaupt kein Casting, ich kann nicht verstehen, was du erreichen willst ... vielleicht sollte b die erste Klasse sein? – Gusman
Wenn Sie versuchen, diese Art von Problem zu lösen, ist es normalerweise am besten, einen Schritt zurückzutreten und den Code anders zu schreiben, anstatt das ursprüngliche Problem zu lösen. –