CA1034: Los tipos anidados no deben ser visibles
Propiedad | Value |
---|---|
Identificador de la regla | CA1034 |
Título | Los tipos anidados no deben ser visibles |
Categoría | Diseño |
La corrección es problemática o no problemática | Problemático |
Habilitado de forma predeterminada en .NET 9 | No |
Causa
Un tipo visible externamente contiene una declaración de tipos visible externamente. Las enumeraciones anidadas, los tipos protegidos y los patrones de generador están exentos de esta regla.
Descripción de la regla
Los tipos anidados son tipos declarados en el ámbito de otro tipo. Los tipos anidados son útiles para encapsular los detalles de la implementación privada del tipo contenido. Los tipos anidados, utilizados para este propósito, no deben ser visibles externamente.
No utilice tipos anidados visibles externamente para la agrupación lógica o para evitar colisiones de nombres; en su lugar, use espacios de nombres.
Los tipos anidados incluyen la noción de accesibilidad de miembros, que algunos programadores no entienden claramente.
Los tipos protegidos se pueden utilizar en subclases y tipos anidados en escenarios de personalización avanzada.
Cómo corregir infracciones
Si no quiere que el tipo anidado sea visible externamente, cambie la accesibilidad del tipo. De lo contrario, quite el tipo anidado de su elemento primario. Si el propósito de la anidación es categorizar el tipo anidado, use un espacio de nombres para crear la jerarquía.
Cuándo suprimir las advertencias
No suprima las advertencias de esta regla.
Ejemplo
En el ejemplo siguiente se muestra un tipo que infringe la regla.
public class ParentType
{
public class NestedType
{
public NestedType()
{
}
}
public ParentType()
{
NestedType nt = new NestedType();
}
}
Imports System
Namespace ca1034
Class ParentType
Public Class NestedType
Sub New()
End Sub
End Class
Sub New()
End Sub
End Class
End Namespace