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.
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.