Freigeben über


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(){}
   }
}