Compartir a través de


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.