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.
Verwenden Sie benannte Parameter:
%Vor% Nun weiß der Compiler, dass Sie die Methode Do(ModelA)
und nicht die Methode Do(ModelBase)
aufrufen möchten.
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>
Tags und Links c#