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.
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.
Tags und Links .net c# inheritance code-analysis virtual