Reflexión (C# y Visual Basic)
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 permite tener acceso a ellos. Para obtener más información, vea Extender metadatos mediante atributos.
Este 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:
Dim i As Integer = 42
Dim type As System.Type = i.GetType()
System.Console.WriteLine(type)
// Using GetType to obtain type information:
int i = 42;
System.Type type = i.GetType();
System.Console.WriteLine(type);
El resultado es:
System.Int32
En el ejemplo siguiente se utiliza la reflexión para obtener el nombre completo del ensamblado cargado.
' Using Reflection to get information from an Assembly:
Dim info As System.Reflection.Assembly = GetType(System.Int32).Assembly
System.Console.WriteLine(info)
// Using Reflection to get information from an Assembly:
System.Reflection.Assembly info = typeof(System.Int32).Assembly;
System.Console.WriteLine(info);
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. Para obtener más información, vea Recuperar información almacenada en atributos.
Para examinar e instanciar tipos en un ensamblado.
Para compilar 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:
Vea también
Referencia
Dominios de aplicación (C# y Visual Basic)
Conceptos
Ensamblados en Common Language Runtime