Condividi tramite


CA1047: Non dichiarare membri protetti nei tipi sealed

TypeName

DoNotDeclareProtectedMembersInSealedTypes

CheckId

CA1047

Category

Microsoft.Design

Breaking Change

Non sostanziale

Causa

Un tipo pubblico è sealed (NotInheritable in Visual Basic) e dichiara un membro protetto o un tipo annidato protetto. Questa regola non segnala violazioni per i metodi Finalize che devono seguire questo modello.

Descrizione della regola

I tipi dichiarano membri protetti in modo che i tipi che ereditano possano accedere al membro o eseguirne l'override. Per definizione, non è possibile ereditare da un tipo sealed, pertanto non è possibile chiamare metodi protetti su tipi sealed.

Il compilatore C# genera un avviso per questo errore.

Come correggere le violazioni

Per correggere una violazione di questa regola, modificare il livello di accesso del membro in privato oppure rendere ereditabile il tipo.

Esclusione di avvisi

Non escludere un avviso da questa regola. Se si lascia il tipo nello stato corrente è possibile causare problemi di gestione e non ottenere alcun vantaggio.

Esempio

Nell'esempio riportato di seguito viene illustrato un tipo che viola questa regola.

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