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:
Cuando es necesario obtener acceso a atributos en los metadatos del programa. Vea el tema Acceso a atributos mediante reflexión.
Para examinar e instanciar tipos en un ensamblado.
Para generar nuevos tipos en tiempo de ejecución. Utilice clases en System.Reflection.Emit.
Para realizar enlaces en tiempo de ejecución, con acceso a los métodos en tipos creados en tiempo de ejecución. Consulte el tema Cargar y utilizar tipos dinámicamente.
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
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#)