CA1048: Virtuelle Member in versiegelten Typen nicht deklarieren
TypeName |
DoNotDeclareVirtualMembersInSealedTypes |
CheckId |
CA1048 |
Kategorie |
Microsoft.Design |
Unterbrechende Änderung |
Breaking |
Ursache
Ein öffentlicher Typ ist versiegelt und deklariert eine Methode, die sowohl virtual (Overridable in Visual Basic) als auch nicht final ist. Diese Regel meldet keine Verstöße bei Delegattypen, die diesem Muster folgen müssen.
Regelbeschreibung
Typen deklarieren Methoden als virtuell, damit erbende Typen die Implementierung der virtuellen Methode überschreiben können. Per Definition ist es nicht möglich, von einem versiegelten Typ zu erben. Dementsprechend ist eine virtuelle Methode auf einem versiegelten Typ bedeutungslos.
Bei Verwendung des Visual Basic .NET-Compilers und des C#-Compilers ist ausgeschlossen, dass Typen gegen diese Regel verstoßen.
Behandeln von Verstößen
Um einen Verstoß gegen diese Regel zu beheben, definieren Sie die Methode als nicht virtuelle Methode, oder machen Sie den Typ vererbbar.
Wann sollten Warnungen unterdrückt werden?
Unterdrücken Sie keine Warnung dieser Regel. Das Beibehalten des aktuellen Zustands des Typs kann Wartungsprobleme verursachen und bietet keine Vorteile.
Beispiel
Im folgenden Beispiel wird ein Typ veranschaulicht, der gegen diese Regel verstößt.
using namespace System;
namespace DesignLibrary
{
public ref class SomeType sealed
{
public:
virtual bool VirtualFunction() { return true; }
};
}