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:

Para obtener más información:

Consulte también