Der Zugriff auf eine implementierte abstrakte Eigenschaft im Konstruktor verursacht CA2214: Rufen Sie keine überschreibbaren Methoden in Konstruktoren auf

8
%Vor%

Der Konstruktor MyClass () verursacht CA2214:

  

Rufen Sie keine überschreibbaren Methoden in Konstruktoren auf.

Dies wird normalerweise nur angezeigt, wenn eine virtuelle Methode aufgerufen wird, die in derselben Klasse wie der Konstruktor definiert ist. z.B. Zugriff auf MyProperty im Konstruktor von MyBase . Hier rufe ich eine nicht virtuelle überschriebene Implementierung einer geerbten abstrakten Eigenschaft im Konstruktor der abgeleiteten Klasse auf.

    
Monstieur 10.06.2013, 07:11
quelle

1 Antwort

9

Nein, es ist immer noch virtuell, da override das Member nicht implizit versiegelt. (Versuchen Sie es: leiten Sie eine andere Klasse von MyClass ab, und Sie können MyProperty erneut überschreiben.)

Sie können es jedoch explizit versiegeln:

%Vor%

An diesem Punkt würde ich erwarten, dass die Warnung weggeht.

    
Jon Skeet 10.06.2013, 07:26
quelle