Compartir a través de


CA1724: Type Names Should Not Match Namespaces (Los nombres de tipo no deben coincidir con los espacios de nombres)

Propiedad Value
Identificador de la regla CA1724
Título Los nombres de tipo no deben coincidir con los espacios de nombres
Categoría Nomenclatura
La corrección es problemática o no problemática Problemático
Habilitado de forma predeterminada en .NET 8 No

Causa

Un nombre de tipo coincide con un nombre de espacio de nombres al que se hace referencia que tiene uno o más tipos visibles externamente. En la comparación de nombres no se distingue entre mayúsculas y minúsculas.

Descripción de la regla

Los nombres de tipos creados por el usuario no deben coincidir con los nombres de los espacios de nombres a los que se hace referencia y que tienen tipos visibles externamente. Infringir esta regla puede reducir la utilidad de la biblioteca.

Cómo corregir infracciones

Cambie el nombre del tipo para que no coincida con el nombre de un espacio de nombres al que se hace referencia que tenga tipos visibles externamente.

Cuándo suprimir las advertencias

Para el nuevo desarrollo, no hay escenarios conocidos donde se deba suprimir una advertencia de esta regla. Antes de suprimir la advertencia, considere detenidamente cómo puede que los usuarios de la biblioteca se confundan con el nombre coincidente. En el caso del envío de librerías, es posible que tenga que suprimir una advertencia de esta regla.

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

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

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

Ejemplo

namespace MyNamespace
{
    // This class violates the rule
    public class System
    {
    }
}