Delegados y reflexión.

09/01/2005 - 20:23 por Jose Antonio | Informe spam
He estado investigandoun poco sobre los delegados y mi impresión es que, a
parte de solucionar el tema de los eventos, sirven de muy poco si son
incapaces como asi es, de funcionar con metodos recogidos por reflexion de
la siguiente manera:

delegate void delegado();

public void metodo(){

// instrucciones del metodo
}

delegado d=new delegado(metodo):
d();


// hasta aqui todo perfecto, pero si el metodo lo cogemos por reflexion.

delegado d=new
delegado(Assembly.GetExecutingAsembly().GetType("Emsamblado").GetMethod("metodo"))

esto no compila, con lo cual si no sabes en tiempo de diseño como se llama
el metodo al que quieres llamar, los delegados no sirven de nada.
 

Leer las respuestas

#1 Miguel Ortiz Falcón
09/01/2005 - 23:27 | Informe spam
Mira te voy a dar mi punto de vista, yo creo que los
delegados son una característica muy potente de C#. Lo
que pasa que en ocasión puede ser un poco "laborioso"
trabajar con ellos. En el caso que presentas, bueno
realmente NO necesitas saber cómo se llama el método que
vas a llamar a través del delegado, es decir tu creas un
delegado X, este delegado tiene su firma no ?...el numero
de parámetros que tomará, el valor de retorno, y
entonces, el delegado podrá llamar a CUALQUIER método
llámese como se llame, el único requisito es que el
método a llamar tenga la misma firma que el delegado.

Y pues aparte otra muy buena capacidad de los delegados
es poder construir interface dinámicamente que responda a
eventos determinados.

Bueno, Saludos...

Miguel Ortiz Falcón



He estado investigandoun poco sobre los delegados y mi


impresión es que, a
parte de solucionar el tema de los eventos, sirven de


muy poco si son
incapaces como asi es, de funcionar con metodos


recogidos por reflexion de
la siguiente manera:

delegate void delegado();

public void metodo(){

// instrucciones del metodo
}

delegado d=new delegado(metodo):
d();


// hasta aqui todo perfecto, pero si el metodo lo


cogemos por reflexion.

delegado d=new
delegado(Assembly.GetExecutingAsembly().GetType


("Emsamblado").GetMethod("metodo"))

esto no compila, con lo cual si no sabes en tiempo de


diseño como se llama
el metodo al que quieres llamar, los delegados no sirven


de nada.




.

Preguntas similares