CA1515: considere la posibilidad de hacer que los tipos públicos sean internos

Propiedad Value
Identificador de la regla CA1515
Título Considere la posibilidad de hacer que los tipos públicos sean internos
Categoría Capacidad de mantenimiento
La corrección es problemática o no problemática Poco problemático
Habilitado de forma predeterminada en .NET 8 No

Causa

Un tipo dentro de un ensamblado ejecutable se declara como público.

Descripción de la regla

A diferencia de una biblioteca de clases, la API de una aplicación no suele referenciarse públicamente, por lo que los tipos se pueden marcar como internal.

Los tipos internos, a su vez, pueden beneficiarse de varios analizadores de código que tienen como destino API no públicas.

Cómo corregir infracciones

Marque el tipo como internal.

Ejemplo

El siguiente fragmento de código muestra una infracción de CA1515:

// Inside a project with <OutputKind>Exe</OutputKind>
public class Program
{
    public static void Main(string[] args)
    {
    }
}
Public Class Program
    Public Shared Sub Main(args As string())
    End Sub
End Class

El siguiente fragmento de código corrige la infracción:

// Inside a project with <OutputKind>Exe</OutputKind>
internal class Program
{
    public static void Main(string[] args)
    {
    }
}
Friend Class Program
    Public Shared Sub Main(args As string())
    End Sub
End Class

Cuándo suprimir las advertencias

Es seguro suprimir una infracción de esta regla si no le preocupa el mantenimiento del código.

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 CA1515
// The code that's violating the rule is on this line.
#pragma warning restore CA1515

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.CA1515.severity = none

Para obtener más información, consulte Procedimiento para suprimir advertencias de análisis de código.