CA1852: Tipos internos de sello
Propiedad | Value |
---|---|
Identificador de la regla | CA1852 |
Título | Sellar tipos internos |
Categoría | Rendimiento |
La corrección es problemática o no problemática | Poco problemático |
Versión introducida | .NET 7 |
Habilitado de forma predeterminada en .NET 9 | No |
Causa
Un tipo que no es accesible fuera de su ensamblado y que no tiene subtipos dentro de su ensamblado contenedor no está marcado como sealed
(NotInheritable
).
Descripción de la regla
Cuando un tipo no es accesible fuera de su ensamblado y no tiene subtipos dentro de su ensamblado contenedor, puede estar sellado de forma segura. Los tipos de sellado pueden mejorar el rendimiento. Para obtener más información, vea Propuesta del analizador: Sellado de tipos internos o privados].
Si aplica System.Runtime.CompilerServices.InternalsVisibleToAttribute al ensamblado que se está analizando, esta regla no marca los tipos que no están marcados como sealed
de forma predeterminada, ya que un ensamblado de confianza puede usar un campo. Para analizar el ensamblado de todos modos, consulte Configuración del código para analizar.
Cómo corregir infracciones
Marque el tipo como sealed
(NotInheritable
en Visual Basic).
Ejemplo
El siguiente fragmento de código muestra una infracción de la regla CA1852:
internal class C
{ }
Class C
End Class
El siguiente fragmento de código corrige la infracción:
internal sealed class C
{ }
NotInheritable Class C
End Class
Cuándo suprimir las advertencias
Si el rendimiento no es un problema, es seguro suprimir esta advertencia.
Supresión de una advertencia
Si solo quiere suprimir una única infracción, agregue directivas de preprocesador al archivo de origen para deshabilitar y volver a habilitar la regla.
#pragma warning disable CA1852
// The code that's violating the rule is on this line.
#pragma warning restore CA1852
Para deshabilitar la regla de un archivo, una carpeta o un proyecto, establezca su gravedad en none
del archivo de configuración.
[*.{cs,vb}]
dotnet_diagnostic.CA1852.severity = none
Para obtener más información, consulte Procedimiento para suprimir advertencias de análisis de código.
Configuración del código para analizar
Use la opción siguiente para configurar en qué partes del código base ejecutar esta regla.
Puede configurar esta opción solo para esta regla, para todas las reglas a las que se aplica o para todas las reglas de esta categoría (Rendimiento) a las que se aplica. Para más información, vea Opciones de configuración de reglas de calidad de código.
Omisión del atributo InternalsVisibleTo
De forma predeterminada, esta regla está deshabilitada si el ensamblado que se analiza usa InternalsVisibleToAttribute para exponer sus símbolos internos. Para especificar que la regla se debe ejecutar incluso si el ensamblado está marcado con InternalsVisibleToAttribute, agregue el siguiente par clave-valor a un archivo .editorconfig en el proyecto:
dotnet_code_quality.CAXXXX.ignore_internalsvisibleto = true
Esta opción está disponible a partir de .NET 8.