Hola,
Aunque es un tema que daría para mucho, aquí te pongo un sencillísimo ejemplo basado en los que aparecen en el libro Visual C# de
Francisco Charte:
Código:
/*
* Basado en ejemplos del libro Visual C# de Francisco,
* Charte, concretamente, los del capítulo titulado
* Recuperación de información de tipos en tiempo de
* ejecución.
*
*/
using System;
using System.Reflection;
namespace Consola.Pruebas
{
class Program
{
static void Main(string[] args)
{
/* Obtenemos una referencia a este ensamblado, pero, nótese
que podríamos obtener la referencia de cualquier otro
*/
Assembly ensamblado = Assembly.GetExecutingAssembly();
/* Obtenemos el tipo de la clase "Prueba", a traves de su
nombre completo, que, como puede verse, incluye el ensam-
blado en donde se encuentra dicha clase Pruebas.
*/
Type ClasePrueba = ensamblado.GetType("Consola.Pruebas.Prueba");
// Si efectivamente tenemos el tipo de la clase...
if (ClasePrueba != null)
{
/* Creamos una instancia de la clase, pero, nótese que lo
obtendremos será la instancia de un "objeto", pero no po-
dremos trabajar con él como si fuera directamente instan-
ciado "como suele ser habitual".
*/
Object ObjetoPrueba = Activator.CreateInstance(ClasePrueba);
// Esta sería una forma de invocar a un método del objeto
(ObjetoPrueba as Prueba).Saludos();
// Esta sería otra, nótese que aquí "no conocemos" la clase Prueba
MethodInfo MetodoSaludos = ClasePrueba.GetMethod("Saludos");
MetodoSaludos.Invoke(ObjetoPrueba, null);
}
Console.ReadLine();
}
}
// Clase para las pruebas anteriores
class Prueba
{
public Prueba()
{
Console.WriteLine("Constructor de la clase Prueba");
}
public void Saludos()
{
Console.WriteLine("Método Saludos de la clase Prueba");
}
}
} // class Program