Sobre System.Reflection

13/05/2006 - 12:25 por Diego \(DCD\) | Informe spam
Hola,

necesito un poco de ayudita con esto a ver si alguien puede. Tengo una
aplicación hecha con VS2003 y la he convertido a VS2005, pues bien en esta
aplicación tengo un formulario MDI en el que desde el menú llamo de forma
dinámica a los formularios y lo hago con System.Reflection, pero cada vez
que intento visualizar un formulario invocando al método Show desde
reflection me salta la excepción System.Reflection.AmbiguousMatchException,
lo que pasa es que antes los formularios tenían un metodo Show, pero en el
.NET 2.0 este ha sido sobrecargado y ahora hay dos coincidencias para este
método, mi problema es que no sé cómo hacer que llame al Show de forma
correcta. Pongo el código que utilizo para que le echeis un vistazo a ver si
me podeís ayudar.

public void InvocarForm ( object Parent, string NombreClase)
{
object[] param = {Parent};
object obj;
PropertyInfo pty;
MethodInfo mti;

System.Drawing.Point pt = new System.Drawing.Point(0,0);
//Localización del formulario hijo.

Assembly asby = Assembly.LoadFrom("Gestion.exe");
Type classType = asby.GetType("Gestion." + NombreClase);

obj = Activator.CreateInstance(classType);
pty = classType.GetProperty("MdiParent");
mti = pty.GetSetMethod();
mti.Invoke (obj,param);

mti = classType.GetMethod("Show"); 'Aquí es donde me da el error mti.Invoke (obj,null);

pty = classType.GetProperty("Location");
mti = pty.GetSetMethod();
param[0] = pt;
mti.Invoke (obj,param);

}

Gracias y un saludo.

Preguntas similare

Leer las respuestas

#1 Alberto Poblacion
13/05/2006 - 15:07 | Informe spam
"Diego (DCD)" wrote in message
news:
[...] System.Reflection.AmbiguousMatchException, [...] mti =
classType.GetMethod("Show"); 'Aquí es donde me da el error



GetMethod también está sobrecargado, y tiene una versión que admite como
segundo parámetro un array de Type para indicar cuáles son los argumentos
del método que estás buscando. En tu caso, si quieres buscar el "Show" sin
argumentos, puedes conseguirlo asi:

mti = classType.GetMethod("Show", new Type[0]);
Respuesta Responder a este mensaje
#2 Diego \(DCD\)
13/05/2006 - 20:13 | Informe spam
Gracias, era eso.

Un saludo.
"Alberto Poblacion"
escribió en el mensaje news:
"Diego (DCD)" wrote in message
news:
[...] System.Reflection.AmbiguousMatchException, [...] mti =
classType.GetMethod("Show"); 'Aquí es donde me da el error



GetMethod también está sobrecargado, y tiene una versión que admite como
segundo parámetro un array de Type para indicar cuáles son los argumentos
del método que estás buscando. En tu caso, si quieres buscar el "Show" sin
argumentos, puedes conseguirlo asi:

mti = classType.GetMethod("Show", new Type[0]);




email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida