Reflexão (C#)Reflection (C#)

A reflexão fornece objetos (do tipo Type) que descrevem assemblies, módulos e tipos.Reflection provides objects (of type Type) that describe assemblies, modules and types. É possível usar a reflexão para criar dinamicamente uma instância de um tipo, associar o tipo a um objeto existente ou obter o tipo de um objeto existente e invocar seus métodos ou acessar suas propriedades e campos.You can use reflection to dynamically create an instance of a type, bind the type to an existing object, or get the type from an existing object and invoke its methods or access its fields and properties. Se você estiver usando atributos em seu código, a reflexão permite acessá-los.If you are using attributes in your code, reflection enables you to access them. Para obter mais informações, consulte Atributos.For more information, see Attributes.

Veja um exemplo simples de reflexão usando o método estático GetType – herdado por todos os tipos da classe base Object – para obter o tipo de uma variável:Here's a simple example of reflection using the static method GetType - inherited by all types from the Object base class - to obtain the type of a variable:

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

A saída é:The output is:

System.Int32

O exemplo a seguir usa a reflexão para obter o nome completo do assembly carregado.The following example uses reflection to obtain the full name of the loaded assembly.

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

A saída é:The output is:

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

Observação

As palavras-chave de C# protected e internal não têm significado no IL e não são usadas nas APIs de reflexão.The C# keywords protected and internal have no meaning in IL and are not used in the reflection APIs. Os termos correspondentes na IL são Família e Assembly.The corresponding terms in IL are Family and Assembly. Para identificar um método internal usando a reflexão, use a propriedade IsAssembly.To identify an internal method using reflection, use the IsAssembly property. Para identificar um método protected internal, use o IsFamilyOrAssembly.To identify a protected internal method, use the IsFamilyOrAssembly.

Visão geral da reflexãoReflection Overview

A reflexão é útil nas seguintes situações:Reflection is useful in the following situations:

Para saber mais:For more information:

Consulte tambémSee Also