Reflexo (guia de programação C#) 

Reflexão fornece objetos (do tipo Type) que descrevem os 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 atributos em seu código, reflection permitirá acessá-los.Para obter mais informações, consulte Atributos (guia de programação C#).

Eis aqui um exemplo simples de reflexão usando o método estático GetType -herdadas por todos os tipos a partir do Object classe - base para obter o tipo de uma variável:

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

A saída é:

System.Int32

No exemplo, reflection é usado para obter o nome completo de um conjunto carregado:

// Using Reflection to get information from an Assembly:
System.Reflection.Assembly o = System.Reflection.Assembly.Load("mscorlib.dll");
System.Console.WriteLine(o.GetName());

A saída é:

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

Observação:

As palavras-chave translation from VPE for Csharp protected e internal não têm em IL e não são usados em APIs de reflexão. Os termos correspondentes na IL são Família and Assembly.Para identificar um internal método usando 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:

Especificação da linguagem C#

Para obter mais informações, consulte as seções a seguir no Especificação da linguagem C#:

  • Atributos 1.12

  • O operador typeof 7.5.11

Consulte também

Conceitos

Guia de Programação C#

Referência

Domínios de aplicativo (guia de programação C#)

Conjuntos e (guia de programação C#) no cache do conjunto de módulos (assembly) global