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.
 

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]);

Preguntas similares