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