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.
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).
Tags und Links c#