Reflection I: Empezando, abriendo un formulario

ForTutorial NET

Objetivo

El Objetivo de este artículo es poder abrir un formulario a través de reflection. Para ello necesitamos definir-lo antes.

¿Que es reflection?

Es una manera de llamar a formularios y/o clases que no están en tu proyecto. Esto puede servir, sobretodo, para dividir el proyecto y hacerlo modular. Básicamente, tu tienes un proyecto que al compilar genera una dll y sabiendo la ruta lo instancias para poder utilizarlo.

También se utiliza para generar un menú dinámico. Guardas en un fichero de configuración (por ejemplo xml) o una tabla en la BDD, el nombre de la dll, ruta, un boolean si es visible y poco mas y ya esta montado. Este ejemplo del menú dinámico lo veremos en el siguiente post.

Vamos a ello

Primero tenemos que tener dos proyectos creados con un formulario cada uno, para diferenciarlos de forma fácil poned algún objeto diferente. El primero lo creamos como windows aplicaction y el segundo proyecto tiene que ser de tipo librería de clases.

Una vez lo tengamos vamos a crear un directorio para la compilación(«c:temptestReflection» por ejemplo). Después, seleccionamos los dos proyectos y en las propiedades del proyecto/compilar y le ponemos la ruta o le damos al botón de browse y la seleccionamos.

rutaCompilar

Ahora en el evento de onClick del botón del proyecto de windows aplication introducimos esto:
La variable dll contiene la ruta y el nombre de la dll sin extension

//le indicamos donde esta la dll
System.Reflection.Assembly extAssembly = System.Reflection.Assembly.LoadFrom(dll + ".dll");

//instanciamos un formulario con el nombre de la dll(sin extensión) "." nombre formulario
Form extForm = ((Form)extAssembly.CreateInstance(dll + "." + formulario, true));
// esto es para poner el mdi como padre, no es necesario de momento
extForm.MdiParent = this.Parent.FindForm(); 
extForm.Show();

Y con esto se nos abriría el formulario.