Partilhar via


Tipos aninhados

Um tipo aninhado é um tipo que é um membro de algum outro tipo. Tipos aninhados devem ser rigidamente acoplados aos seu tipo declarativo e não pode ser útil como um tipo de finalidade geral. Tipos aninhados são confusos para alguns desenvolvedores e não devem ser visíveis publicamente a menos que haja uma razão convincente para fazer isso. Em uma biblioteca bem projetada, os desenvolvedores devem ter raramente usar tipos aninhados para instanciar objetos ou declarar variáveis.

Tipos aninhados são úteis quando o tipo declarativo usa e cria instâncias do tipo aninhado e uso do tipo aninhado não é exposto na membros públicos.

Use tipos aninhados quando a relação entre o tipo aninhado e seu tipo externo é de tal forma que a semântica de acessibilidade de membros é desejável.

Como um tipo aninhado é tratado como um membro do tipo declarativo, do tipo aninhado tem acesso a todos os outros membros do tipo declarativo.

Não use tipos aninhados públicos como uma construção de agrupamento lógico; Use espaços para nome para isso.

Evite expostos publicamente tipos aninhados. A única exceção é quando precisam ser declarados em raras situações como, por exemplo, criando subclasses ou outros cenários de personalização avançada de variáveis do tipo aninhado.

Não use tipos aninhados, se o tipo é a probabilidade de ser consultado fora do tipo declarativo.

Declaração de variáveis e instanciação de objeto para tipos aninhados não deve ser solicitada em cenários comuns. Por exemplo, um delegado manipulador de eventos que manipula um evento definido em uma classe não deve ser aninhado na classe.

Não use tipos aninhados se precisarem ser instanciada pelo código do cliente. Se um tipo tem um construtor público, ele provavelmente não deve ser aninhado.

Idealmente, um tipo aninhado é instanciado e usado somente por seu tipo declarativo. Se um tipo aninhado tem um construtor público, isso indica que o tipo tem algum uso separado do seu tipo declarativo. Em geral, um tipo aninhado não deve executar as tarefas para tipos diferentes de seu tipo declarativo. Se um tipo tem um objetivo maior, ele provavelmente não deve ser aninhado.

Não defina um tipo aninhado como um membro de uma interface. Muitas linguagens não oferecem suporte a tal uma construção.

Portions Copyright 2005 Microsoft Corporation. Todos os direitos reservados.

Portions Copyright Addison-Wesley Corporation. Todos os direitos reservados.

Para obter mais informações sobre as diretrizes de design, consulte a "diretrizes de Design do Framework: Convenções, idiomas e padrões de reutilizável.Bibliotecas de rede" catálogo por Krzysztof Cwalina e Brad Abrams, publicado pela Addison-Wesley, 2005.

Consulte também

Conceitos

Tipos e Namespaces

Outros recursos

Diretrizes de Design do tipo

Diretrizes de Design para desenvolvimento bibliotecas de classe