Type.GetNestedType Método

Definição

Obtém um tipo específico aninhado dentro da corrente Type.

Sobrecargas

Name Description
GetNestedType(String)

Pesquisas pelo tipo aninhado público com o nome especificado.

GetNestedType(String, BindingFlags)

Quando sobreposto numa classe derivada, procura o tipo aninhado especificado, usando as restrições de ligação especificadas.

GetNestedType(String)

Pesquisas pelo tipo aninhado público com o nome especificado.

public:
 virtual Type ^ GetNestedType(System::String ^ name);
public:
 Type ^ GetNestedType(System::String ^ name);
public Type GetNestedType(string name);
abstract member GetNestedType : string -> Type
override this.GetNestedType : string -> Type
member this.GetNestedType : string -> Type
Public Function GetNestedType (name As String) As Type

Parâmetros

name
String

A cadeia que contém o nome do tipo aninhado a obtenir.

Devoluções

Um objeto que representa o tipo público aninhado com o nome especificado, se encontrado; caso contrário, null.

Implementações

Exceções

name é null.

Observações

A pesquisa diferencia name maiúsculas de minúsculas.

Use o nome simples da classe aninhada para name. Não o qualifiques com o nome da classe exterior. Para uma classe genérica aninhada, use o nome distorcido – ou seja, adicione um sotaque grave e o número de argumentos genéricos. Por exemplo, use a cadeia "Inner'1" para obter a classe genérica aninhada Inner<T> (Inner(Of T) em Visual Basic). Não inclua sintaxe específica da linguagem para parâmetros de tipo.

A tabela a seguir mostra quais membros de uma classe base são retornados pelos Get métodos ao refletir sobre um tipo.

Tipo de Membro Estático Não-estático
Construtor No No
Campo No Yes. Um campo é sempre ocultado com base no nome e assinatura.
Event Não aplicável A regra comum do sistema de tipos é que a herança é a mesma dos métodos que implementam a propriedade. A reflexão trata propriedades como esconder pelo nome e assinatura. Veja a nota 2 abaixo.
Método No Yes. Um método (virtual e não virtual) pode ser ocultado por nome ou ocultado por nome e assinatura.
Tipo aninhado No No
Property Não aplicável A regra comum do sistema de tipos é que a herança é a mesma dos métodos que implementam a propriedade. A reflexão trata propriedades como esconder pelo nome e assinatura. Veja a nota 2 abaixo.
  1. Ocultar por nome e assinatura considera todas as partes da assinatura, incluindo modificadores personalizados, tipos de retorno, tipos de parâmetros, sentinelas e convenções de chamada não gerenciadas. Esta é uma comparação binária.

  2. Para reflexão, as propriedades e os eventos são ocultados por nome e assinatura. Se você tiver uma propriedade com um acessador get e um set na classe base, mas a classe derivada tiver apenas um acessor get, a propriedade de classe derivada ocultará a propriedade de classe base e você não poderá acessar o setter na classe base.

  3. Os atributos personalizados não fazem parte do sistema de tipo comum.

Se a corrente Type representa um parâmetro de tipo na definição de tipo genérico ou método genérico, este método pesquisa os tipos aninhados da restrição de classe.

Se um tipo aninhado for genérico, este método devolve a sua definição de tipo genérica. Isto é verdade mesmo que o tipo genérico que envolve seja um tipo fechado e construído.

Note

Se o atual Type representa um tipo genérico definido em C#, Visual Basic ou C++, os seus tipos aninhados são todos genéricos mesmo que não tenham parâmetros genéricos próprios. Isto não é necessariamente verdade para tipos aninhados definidos em assemblies dinâmicos ou compilados com o Ilasm.exe (IL Assembler).

Para informações sobre tipos genéricos aninhados e sobre a construção de tipos genéricos aninhados a partir das suas definições de tipos genéricos, veja MakeGenericType.

Ver também

Aplica-se a

GetNestedType(String, BindingFlags)

Quando sobreposto numa classe derivada, procura o tipo aninhado especificado, usando as restrições de ligação especificadas.

public:
 abstract Type ^ GetNestedType(System::String ^ name, System::Reflection::BindingFlags bindingAttr);
public abstract Type GetNestedType(string name, System.Reflection.BindingFlags bindingAttr);
abstract member GetNestedType : string * System.Reflection.BindingFlags -> Type
Public MustOverride Function GetNestedType (name As String, bindingAttr As BindingFlags) As Type

Parâmetros

name
String

A cadeia que contém o nome do tipo aninhado a obtenir.

bindingAttr
BindingFlags

Uma combinação bit a bit dos valores de enumeração que especifica como a pesquisa é realizada.

-ou-

Default para regressar null.

Devoluções

Um objeto que representa o tipo aninhado que corresponde aos requisitos especificados, se for encontrado; caso contrário, null.

Implementações

Exceções

name é null.

Observações

Use o nome simples da classe aninhada para name. Não o qualifiques com o nome da classe exterior. Para uma classe genérica aninhada, use o nome deformado – ou seja, adicione um acento grave e o número de parâmetros genéricos. Por exemplo, use a cadeia "Inner'1" para obter a classe genérica aninhada Inner<T> (Inner(Of T) em Visual Basic). Não inclua sintaxe específica da linguagem para parâmetros de tipo.

Os seguintes BindingFlags flags de filtro podem ser usados para definir quais os tipos aninhados a incluir na pesquisa:

Este método retorna apenas os tipos aninhados do tipo atual. Não pesquisa as classes base do tipo atual. Para encontrar tipos aninhados em classes base, tens de percorrer a hierarquia de herança, chamando GetNestedType em cada nível.

BindingFlags.Instance e BindingFlags.Static são ignorados.

Chamar este método apenas com a BindingFlags.Public flag ou apenas com a BindingFlags.NonPublic flag devolverá os tipos aninhados especificados e não requer outras flags.

Consulte System.Reflection.BindingFlags para obter mais informações.

Se a corrente Type representa um parâmetro de tipo na definição de tipo genérico ou método genérico, este método pesquisa os tipos aninhados da restrição de classe.

Se um tipo aninhado for genérico, este método devolve a sua definição de tipo genérica. Isto é verdade mesmo que o tipo genérico que envolve seja um tipo fechado e construído.

Note

Se o atual Type representa um tipo genérico definido em C#, Visual Basic ou C++, os seus tipos aninhados são todos genéricos mesmo que não tenham parâmetros genéricos próprios. Isto não é necessariamente verdade para tipos aninhados definidos em assemblies dinâmicos ou compilados com o Ilasm.exe (IL Assembler).

Para informações sobre tipos genéricos aninhados e sobre a construção de tipos genéricos aninhados a partir das suas definições de tipos genéricos, veja MakeGenericType.

Ver também

Aplica-se a