Reflexão (C# e Visual Basic)

Reflexo fornece objetos (do tipo Type) que descrevem a assemblies, módulos e tipos. Pode-se usar reflection para criar dinamicamente uma instância de um tipo, vincular o tipo a um objeto existente, ou obter o tipo de um objeto existente e chamar seus métodos ou acessar seus campos e propriedades. Se você estiver usando os atributos em seu código, reflexão permite acessá-los. Para obter mais informações, consulte Estendendo metadados usando atributos.

Aqui está um exemplo simples de reflexão, usando o método estático GetType - herdadas por todos os tipos da Object classe - para obter o tipo de uma variável base:

' Using GetType to obtain type information:
Dim i As Integer = 42
Dim type As System.Type = i.GetType()
System.Console.WriteLine(type)
// Using GetType to obtain type information:
int i = 42;
System.Type type = i.GetType();
System.Console.WriteLine(type);

A saída é:

System.Int32

O exemplo a seguir usa a reflexão para obter o nome completo do assembly carregado.

' Using Reflection to get information from an Assembly:
Dim info As System.Reflection.Assembly = GetType(System.Int32).Assembly
System.Console.WriteLine(info)
// Using Reflection to get information from an Assembly:
System.Reflection.Assembly info = typeof(System.Int32).Assembly;
System.Console.WriteLine(info);

A saída é:

mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089

ObservaçãoObservação

As palavras-chave C# protected e internal não têm significado na IL e não são usados em reflexão APIs. Os termos correspondentes na IL são família e Assembly. Para identificar um internal método usando a reflexão, uso o IsAssembly propriedade. Para identificar um protected internal método, use o IsFamilyOrAssembly.

Visão geral de reflexão

Reflection é útil nas seguintes situações:

Seções relacionadas

Para obter mais informações:

Consulte também

Referência

Domínios de aplicativo (C# e Visual Basic)

Conceitos

Guia de Programação C#

Assemblies no Common Language Runtime

Outros recursos

Guia de programação Visual Basic