CA1047: No declarar miembros protegidos en tipos sealed
Nombre de tipo |
DoNotDeclareProtectedMembersInSealedTypes |
Identificador de comprobación |
CA1047 |
Categoría |
Microsoft.Design |
Cambio problemático |
Poco problemático |
Motivo
Un tipo público es sealed (NotInheritable en Visual Basic) y declara un miembro protegido o un tipo anidado protegido.Esta regla no realiza ningún informe sobre las infracciones para los métodos Finalize, que deben seguir este modelo.
Descripción de la regla
Los tipos declaran miembros protegidos para que los tipos heredados puedan obtener acceso o reemplazar el miembro.Por definición, no se puede heredar de un tipo sealed, lo que significa que no se puede llamar a los métodos protegidos en tipos sealed.
El compilador de C# emite una advertencia para este error.
Cómo corregir infracciones
Para corregir una infracción de esta regla, cambie el nivel de acceso del miembro a privado o cambie el tipo a heredable.
Cuándo suprimir advertencias
No suprima las advertencias de esta regla.Si se mantiene el estado actual del tipo puede provocar problemas de mantenimiento y no proporciona ventajas.
Ejemplo
El siguiente ejemplo muestra un tipo que infringe esta regla.
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(){}
}
}