Compartir a través de


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