Code Analysis Warnung 2214 - Wie kann man das am besten beheben?

8

Ich habe den folgenden Code:

%Vor%

Dies erzeugt eine CA2214-Warnung. Die Methodenparameter BusinessEntityType und AuditLogCommand sind beide Enumerationen. Ich sehe nicht, was das Problem hier ist, und bin daher nicht sicher, wie ich die Warnung erfüllen soll.

Danke.

    
Randy Minder 18.10.2010, 20:43
quelle

1 Antwort

14

Sind eine oder mehrere Ihrer Eigenschaften virtuell? Dann ist das der Grund, warum CA2214 die Warnung "Überschreibbare Methoden in Konstruktoren nicht aufrufen" lautet.

Hier ist die Begründung für die Regel von MSDN:

  

Wenn eine virtuelle Methode aufgerufen wird, wird die   Aktueller Typ, der die Methode ausführt   wird erst zur Laufzeit ausgewählt. Wenn ein   Konstruktor ruft eine virtuelle Methode auf   ist möglich, dass der Konstruktor für   die Instanz, die die Methode aufruft   wurde nicht ausgeführt.

Was dies bedeutet bedeutet, dass wenn jemand von Ihrer Klasse erbt und eine Methode oder Eigenschaft außer Kraft setzt, auf die in Ihr -Konstruktor zugegriffen wird - dann wird die überschreibende Implementierung vorher getroffen Der Konstruktor für die geerbte Klasse wurde ausgeführt. Dies kann zu Problemen führen, wenn die überschreibende Implementierung auf dem im Konstruktor festgelegten Status beruht.

Um die Warnung zu erfüllen, müssen Sie die Eigenschaften und Methoden, auf die im Konstruktor zugegriffen wird, nicht-virtuell machen (Sie könnten den Typ ggf. versiegeln).

    
driis 18.10.2010, 20:48
quelle

Tags und Links