CA1034: Tipos aninhados não devem ser visíveis
Property | Valor |
---|---|
ID da regra | CA1034 |
Título | Tipos aninhados não devem ser visíveis |
Categoria | Projetar |
Correção interruptiva ou sem interrupção | Quebra |
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 que é declarado dentro do escopo de outro tipo. Os tipos aninhados são úteis para encapsular detalhes de implementação privada do tipo contido. 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 de 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 avançada.
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 do seu pai. Se a finalidade do aninhamento for categorizar o tipo aninhado, use um namespace para criar a hierarquia.
Quando suprimir avisos
Não suprima um aviso nessa regra.
Exemplo
O seguinte exemplo 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