Foros del Web » Programación para mayores de 30 ;) » .NET »

Instanciar en base a variable

Estas en el tema de Instanciar en base a variable en el foro de .NET en Foros del Web. Tengo una tabla donde se registra el nombre de las pantallas de la aplicación C# en Windows Form y el nombre físico, ejm: Catalogo de ...
  #1 (permalink)  
Antiguo 03/11/2011, 10:15
Avatar de mvazquez  
Fecha de Ingreso: octubre-2004
Ubicación: Monterrey - México
Mensajes: 875
Antigüedad: 20 años
Puntos: 8
Pregunta Instanciar en base a variable

Tengo una tabla donde se registra el nombre de las pantallas de la aplicación C# en Windows Form y el nombre físico, ejm: Catalogo de Empleados, frmCatEmp .

Se lee esa tabla y se obtiene el nombre físico frmCatEmp pero yo necesito instanaciar ese formulario en base al nombre físico de la tabla, es decir, hacer esto:
frmCatEmp _ frmCatEmp = null;

alguna sugerencia?
__________________
http://vazquezvega.wordpress.com/
"La paciencia nos da el privilegio de compartir el refrescante fruto de Dios con los demás."
  #2 (permalink)  
Antiguo 03/11/2011, 11:54
Avatar de mvazquez  
Fecha de Ingreso: octubre-2004
Ubicación: Monterrey - México
Mensajes: 875
Antigüedad: 20 años
Puntos: 8
Respuesta: Instanciar en base a variable

Logre hacerlo con Reflection

Código:
using System.Reflection;
Form frm = Assembly.GetExecutingAssembly().CreateInstance("frmCatEmp") as Form;
mi proyecto esta en varias capas, logro hacer lo de arriba cuando estoy en la misma capa, pero cuando el formulario esta en otra capa ya no me deja, es decir, frm esta null, el name space de todas mis pantallas es el mismo con esto evito poner todo la ruta del proyecto y carpetas.

alguna idea?
__________________
http://vazquezvega.wordpress.com/
"La paciencia nos da el privilegio de compartir el refrescante fruto de Dios con los demás."
  #3 (permalink)  
Antiguo 04/11/2011, 12:01
Avatar de Porlachucha  
Fecha de Ingreso: noviembre-2008
Ubicación: Santiago
Mensajes: 172
Antigüedad: 16 años
Puntos: 5
Respuesta: Instanciar en base a variable

revisa el metodo invoke de MethodInfo

mira yo uso este codigo para invocar dinamicamente funciones depoendiendo de valores almacenados en una tabla


String sResultado = String.Empty;
Type variableTipo = Type.GetType("IPNM2.FWK.Calculos");
if (variableTipo == null)
{
// error.
}
MethodInfo variableInfoMetodo = variableTipo.GetMethod(sMetodo);
object instanciaResultado = variableInfoMetodo.Invoke(null, null);
if (instanciaResultado == null)
{
// error
}

en tu caso, creo que podrias manejar en la misma tabla asociado al nombre del form, el nombre del ensamblado que lo contiene, y obtener su tipo en forma dinamica. despues usas el metodo invoke del MethodInfo.

ojala te sirva

saludos
__________________
Nada mas patetico que "detestar" a Intel o Microsoft o Windows o Apple ... apuesto que eres el tipico teton espinilluo y pajero que usa Linux para sentirse capo ...

Etiquetas: instanciar, variables
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 04:20.