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:
Quando você tem acesso a atributos de metadados do seu programa.Consulte o tópico Acessando atributos com reflexo.
Para examinar e instanciar tipos em um conjunto.
Para criar novos tipos em tempo de execução.Usar classes de System.Reflection.Emit.
Para executar ligação tardia, acessar métodos em tipos criados em tempo de execução.Consulte o tópico Carregando dinamicamente e usando tipos.
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
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