Reflexión (C#)Reflection (C#)

La reflexión proporciona objetos (de tipo Type) que describen los ensamblados, módulos y tipos.Reflection provides objects (of type Type) that describe assemblies, modules and types. Puede usar la reflexión para crear dinámicamente una instancia de un tipo, enlazar el tipo a un objeto existente u obtener el tipo desde un objeto existente e invocar sus métodos, o acceder a sus campos y propiedades.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. Si usa atributos en el código, la reflexión le permite acceder a ellos.If you are using attributes in your code, reflection enables you to access them. Para obtener más información, consulte Attributes (Atributos).For more information, see Attributes.

Este es un ejemplo simple de reflexión que usa el método estático GetType, heredado por todos los tipos de la clase base Object, para obtener el tipo de una variable: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);  

El resultado es el siguiente:The output is:

System.Int32

En el ejemplo siguiente se usa la reflexión para obtener el nombre completo del ensamblado cargado.The following example uses reflection to obtain the full name of the loaded assembly.

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

El resultado es el siguiente:The output is:

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

Nota

Las palabras clave de C# protected y internal no tienen ningún significado en IL y no se usan en las API de reflexión.The C# keywords protected and internal have no meaning in IL and are not used in the reflection APIs. Los términos correspondientes en IL son Family y Assembly.The corresponding terms in IL are Family and Assembly. Para identificar un método internal con la reflexión, use la propiedad IsAssembly.To identify an internal method using reflection, use the IsAssembly property. Para identificar un método protected internal, use IsFamilyOrAssembly.To identify a protected internal method, use the IsFamilyOrAssembly.

Información general de la reflexiónReflection Overview

La reflexión resulta útil en las siguientes situaciones:Reflection is useful in the following situations:

Para obtener más información:For more information:

Vea tambiénSee also