Reflexión (C#)
La reflexión proporciona objetos (de tipo Type) que describen los ensamblados, módulos y tipos. 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. Si usa atributos en el código, la reflexión le permite acceder a ellos. Para obtener más información, consulte Attributes (Atributos).
Este es un ejemplo simple de reflexión que usa el método GetType(), heredado por todos los tipos de la clase base Object, para obtener el tipo de una variable:
Nota
Asegúrese de agregar using System; y using System.Reflection; en la parte superior del archivo de .cs.
// Using GetType to obtain type information:
int i = 42;
Type type = i.GetType();
Console.WriteLine(type);
El resultado es System.Int32.
En el ejemplo siguiente se usa la reflexión para obtener el nombre completo del ensamblado cargado.
// Using Reflection to get information of an Assembly:
Assembly info = typeof(int).Assembly;
Console.WriteLine(info);
El resultado es System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e.
Nota
Las palabras clave de C# protected y internal no tienen ningún significado en lenguaje intermedio (IL) y no se usan en las API de reflexión. Los términos correspondientes en IL son Family y Assembly. Para identificar un método internal con la reflexión, use la propiedad IsAssembly. Para identificar un método protected internal, use IsFamilyOrAssembly.
Información general de la reflexión
La reflexión resulta útil en las siguientes situaciones:
- Cuando tenga que acceder a atributos en los metadatos del programa. Para obtener más información, consulte Recuperar información almacenada en atributos.
- Para examinar y crear instancias de tipos en un ensamblado.
- Para generar nuevos tipos en tiempo de ejecución. Usar clases en System.Reflection.Emit.
- Para llevar a cabo métodos de acceso de enlace en tiempo de ejecución 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:
- Reflexión
- Ver información tipos
- Reflexión y tipos genéricos
- System.Reflection.Emit
- Recuperar la información almacenada en atributos