CA1047: Geschützte Member in versiegelten Typen nicht deklarieren
TypeName |
DoNotDeclareProtectedMembersInSealedTypes |
CheckId |
CA1047 |
Kategorie |
Microsoft.Design |
Unterbrechende Änderung |
Nicht unterbrechend |
Ursache
Ein öffentlicher Typ ist sealed (NotInheritable in Visual Basic) und deklariert einen geschützten Member oder einen geschützten geschachtelten Typ.Diese Regel meldet keine Verstöße bei Finalize-Methoden, die diesem Muster folgen müssen.
Regelbeschreibung
Typen deklarieren geschützte Member, damit erbende Typen auf den Member zugreifen oder diesen überschreiben können.Per Definition ist es nicht möglich, von einem versiegelten Typ zu erben. Dies bedeutet, dass geschützte Methoden auf versiegelten Typen nicht aufgerufen werden können.
Der C#-Compiler gibt bei diesem Fehler eine Warnung aus.
Behandeln von Verstößen
Um einen Verstoß gegen diese Regel zu beheben, ändern Sie die Zugriffsebene des Members in privat, oder machen Sie den Typ erbbar.
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.
Imports System
Namespace DesignLibrary
Public NotInheritable Class BadSealedType
Protected Sub MyMethod
End Sub
End Class
End Namespace
using System;
namespace DesignLibrary
{
public sealed class SealedClass
{
protected void ProtectedMethod(){}
}
}