CA1034: Os tipos aninhados não devem estar visíveis
Propriedade | valor |
---|---|
ID da regra | CA1034 |
Cargo | Os tipos aninhados não devem ser visíveis |
Categoria | Desenho |
A correção está quebrando ou não quebrando | Quebrando |
Habilitado por padrão no .NET 8 | Não |
Causa
Um tipo visível externamente contém uma declaração de tipo visível externamente. Enumerações aninhadas, tipos protegidos e padrões de construtor estão isentos dessa regra.
Descrição da regra
Um tipo aninhado é um tipo declarado dentro do escopo de outro tipo. Os tipos aninhados são úteis para encapsular detalhes de implementação privada do tipo que contém. Usados para essa finalidade, os tipos aninhados não devem ser visíveis externamente.
Não use tipos aninhados visíveis externamente para agrupamento lógico ou para evitar colisões de nomes; em vez disso, use namespaces.
Os tipos aninhados incluem a noção de acessibilidade dos membros, que alguns programadores não entendem claramente.
Os tipos protegidos podem ser usados em subclasses e tipos aninhados em cenários de personalização antecipada.
Como corrigir violações
Se você não pretende que o tipo aninhado seja visível externamente, altere a acessibilidade do tipo. Caso contrário, remova o tipo aninhado de seu pai. Se o objetivo do aninhamento for categorizar o tipo aninhado, use um namespace para criar a hierarquia.
Quando suprimir avisos
Não suprima um aviso desta regra.
Exemplo
O exemplo a seguir mostra um tipo que viola a regra.
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