Reflexión (Guía de programación de C#)

Actualización: noviembre 2007

La reflexión proporciona objetos (de tipo Type) que describen ensamblados, módulos y tipos. Se puede utilizar la reflexión para crear dinámicamente una instancia de un tipo, enlazar el tipo a un objeto existente u obtener el tipo a partir de un objeto existente, e invocar sus métodos o tener acceso a sus campos y propiedades. Si utiliza atributos en el código, la reflexión le permite tener acceso a ellos. Para obtener más información, vea Atributos (Guía de programación de C#).

Éste es un ejemplo simple de Reflexión que utiliza el método estático, GetType heredado por todos los tipos de la clase base, Object para obtener el tipo de una variable:

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

El resultado es:

System.Int32

En este ejemplo, se utiliza la reflexión para obtener el nombre completo de un ensamblado cargado:

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

El resultado es:

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

Nota:

Las palabras clave de C# protected e internal no tienen ningún significado en IL y no se utilizan en las API de reflexión. Los términos correspondientes en IL son Familia y Ensamblado. Para identificar un método internal mediante reflexión, utilice la propiedad IsAssembly. Para identificar un método protected internal, utilice la propiedad IsFamilyOrAssembly.

Información general sobre la reflexión

La reflexión resulta útil en estas situaciones:

Secciones relacionadas

Para obtener más información:

Especificación del lenguaje C#

Para obtener más información, vea las secciones siguientes de Especificación del lenguaje C#.

  • 1.12 Atributos

  • 7.5.11 El operador typeof

Vea también

Conceptos

Guía de programación de C#

Referencia

Dominios de aplicación (Guía de programación de C#)

Ensamblados y Caché de ensamblados global (Guía de programación de C#)