Partilhar via


CA1034: Os tipos aninhados não devem estar visíveis

Property valor
ID da regra CA1034
Título 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 9 Não

Motivo

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