Call-Methode von der abstrakten Klasse überladen

8

Ich muss eine Methode einer abstrakten Klassenimplementierung aufrufen. Der Compiler verwendet jedoch immer die überladene Methode aus der konkreten Klasse, da die Signatur nur einen geerbten Typ erfordert.

Sehen Sie sich den Code an:

- Dies ist offensichtlich eine stark vereinfachte Version des tatsächlichen Codes, den ich verwende;)

%Vor%

^^ Dies führt zu einer Rekursion

Was ich versucht habe ist:

%Vor%

^^ ändert nichts

%Vor%

^^ gibt einen Fehler aus "Ein abstraktes Basismitglied kann nicht aufgerufen werden: 'AbstractClass.Do (ModelA)'"

Wie rufe ich die Methode "public override void Do (ModelA model)" auf?

übrigens. Wenn ich die Klasse zu diesem ändere

%Vor%

es funktioniert.

    
Sam7 30.08.2013, 12:22
quelle

3 Antworten

9

Cast this bis AbstractClass<ModelA> vor Aufruf:

%Vor%     
MarcinJuraszek 30.08.2013, 12:39
quelle
4

Verwenden Sie benannte Parameter:

%Vor%

Nun weiß der Compiler, dass Sie die Methode Do(ModelA) und nicht die Methode Do(ModelBase) aufrufen möchten.

    
ProgramFOX 30.08.2013 12:35
quelle
3

Versuchen Sie, die Schnittstelle explizit zu implementieren. Von nun an können Sie die Methode IInterface<ModelBase>.Do(ModelBase model) nur von einer Referenz vom Typ IInterface<ModelBase>

aufrufen %Vor%     
Claudio Musumeci 30.08.2013 12:58
quelle

Tags und Links