Compartir a través de


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:

Secciones relacionadas

Para obtener más información:

Vea también

Referencia

Dominios de aplicación (C# y Visual Basic)

Conceptos

Guía de programación de C#

Ensamblados en Common Language Runtime

Otros recursos

Guía de programación en Visual Basic