Principales respuestas
Instanciar un formulario que pertenece a una dll

Pregunta
-
Pido mil disculpas. Puse una respuesta y me equivoqué. Pulsé en EDITAR para modificarla, y cometí el error de editar el mensaje original en lugar de editar mi respuesta. Por favor, vuélve a poner la pregunta. Pido de nuevo mil disculpas, ha sido un error mío.
Type formType = Type.GetType(sObject); if (formType != null) { var f = (Form)Activator.CreateInstance(formType); f.MdiParent = this; f.Show(); }
- Editado Alberto PoblacionMVP, Moderator sábado, 26 de mayo de 2018 7:01 Disculpas.
- Editado Gaston Marengo sábado, 26 de mayo de 2018 11:19 codigo
Respuestas
-
¿Dónde te devuelve null, en el GetType o en el CreateInstance?
Si es en el GetType, prueba a pasarle el string en el formato "EspacioDeNombres.ClaseDelForm,NobreDeLaDLL". Fíjate en que el nombre de la DLL (sin la extensión .dll) va detrás del nombre de la clase separado por una coma.
La DLL es el assembly, no es que haya que "recuperar el assembly de la DLL".
https://msdn.microsoft.com/en-us/library/w3f99sx1(v=vs.110).aspx
- Marcado como respuesta Gaston Marengo sábado, 26 de mayo de 2018 17:43
Todas las respuestas
-
Asegúrate de que en el sObject tienes el nombre completo de la clase incluyendo el Assembly, de lo contrario el Activator.CreateInstance intenta buscarlo en el assembly actual en lugar de la DLL.
- Editado Alberto PoblacionMVP, Moderator sábado, 26 de mayo de 2018 7:02 Corrección
-
Hola buenos dias y gracias por tu respuesta.
la variable sObject tiene el nombre completo de la dll, tambien probe cambiandoselo y cortandolo, pero daba resultado, para mi no lo devuelve ya que es una dll, y el exe es "nativo" para winforms. esta linea de codigo devuelve el Assembly que me decis
Type formType = Type.GetType(sObject);
Pero la verdad no se como recuperar ese assembly de la dll.Saludos
Saludos, Gastón Marengo
-
¿Dónde te devuelve null, en el GetType o en el CreateInstance?
Si es en el GetType, prueba a pasarle el string en el formato "EspacioDeNombres.ClaseDelForm,NobreDeLaDLL". Fíjate en que el nombre de la DLL (sin la extensión .dll) va detrás del nombre de la clase separado por una coma.
La DLL es el assembly, no es que haya que "recuperar el assembly de la DLL".
https://msdn.microsoft.com/en-us/library/w3f99sx1(v=vs.110).aspx
- Marcado como respuesta Gaston Marengo sábado, 26 de mayo de 2018 17:43
-