CA1034: Los tipos anidados no deben ser visibles
TypeName |
NestedTypesShouldNotBeVisible |
Identificador de comprobación |
CA1034 |
Categoría |
Microsoft.Design |
Cambio problemático |
Problemático |
Motivo
Un tipo visible externamente contiene una declaración de tipos visible externamente.Las enumeraciones anidadas y los tipos protegidos están exentos de esta regla.
Descripción de la regla
Los tipos anidados son tipos declarados dentro del á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 agrupar de forma lógica o evitar las colisiones del nombre; en su lugar, utilice los espacios de nombres.
Los tipos anidados incluyen la noción de accesibilidad de miembro, que algunos programadores no entienden claramente.
Los tipos protegidos se pueden utilizar en subclases y los tipos anidados en escenarios de personalización avanzada.
Cómo corregir infracciones
Si no desea que el tipo anidado esté visible externamente, cambie la accesibilidad del tipo.De lo contrario, quite el tipo anidado de su elemento primario.Si el propósito del anidamiento es clasificar el tipo anidado, utilice un espacio de nombres para crear la jerarquía en su lugar.
Cuándo suprimir advertencias
No suprima las advertencias de esta regla.
Ejemplo
El siguiente ejemplo muestra un tipo que infringe la regla.
Imports System
Namespace DesignLibrary
Class ParentType
Public Class NestedType
Sub New()
End Sub
End Class
Sub New()
End Sub
End Class
End Namespace
using System;
namespace DesignLibrary
{
internal class ParentType
{
public class NestedType
{
public NestedType()
{
}
}
public ParentType()
{
NestedType nt = new NestedType();
}
}
}
using namespace System;
namespace DesignLibrary
{
public ref class ParentType
{
public:
ref class NestedType
{
public:
NestedType()
{
}
};
ParentType()
{
NestedType^ nt = gcnew NestedType();
}
};
}