Nombre metodo como parametro

20/04/2006 - 16:27 por Catalin Lungu | Informe spam
Hola,
Quiero hacer lo siguiente.

public class A
{
public void M()
{
B b = new B();
b.Ejecuta(nMetodo);
}
public void nMetodo()
{
}
}

public class B
{
public B()
{}
public void Ejecuta(string nMetodo)
{
MiObjeto aaa = new MiObjeto();
aaa.Click += new EventHandler(nMetodo);
}
}

Bueno la ideea es sencilla pero no se como hacerlo. Quiero pasar el nombre
de un metodo, para que se ejecute cuando se desencadena el click del objeto
aaa.

Gracias de antemano,
C.
 

Leer las respuestas

#1 Jose Luis Manners
20/04/2006 - 17:07 | Informe spam
Necesitas usar reflexión. Aqui te muestro un ejemplo:

using System;
using System.Reflection;
class Prueba
{
string nombre;
Prueba(string nuevoNombre)
{
this.nombre = nuevoNombre;
}

public void MuestraNombre()
{
Console.WriteLine(nombre);
}

static void Main()
{
// Crea un objeto Prueba
Prueba p = new Prueba("SoyObjetoPrueba");

// Obtener el metodo que queremos llamar
MethodInfo mi = typeof(Prueba).GetMethod("MuestraNombre");

// Llamar el metodo en el objeto que creamos, sin argumentos
mi.Invoke (p, null);
}
}

Lo importante aqui es obtener un objeto tipo MethodInfo basado en el nombre
del método que queremos llamar (en este caso "MuestraNombre") y luego llamar
ese método usando la funcián Invoke.

Puedes conseguir información mas detallada sobre "Reflection" en el sitio de
MSDN:

http://msdn.microsoft.com/library/s...erview.asp

Coopera con el foro. Dinos si te sirvió la respuesta aquí planteada.

Saludos,

Jose Luis Manners
MCP, MCAD.NET, DCE5
http://www.josemanners.com/

"Debugging is twice as hard as writing the code in the first
place. Therefore, if you write the code as cleverly as
possible, you are, by definition, not smart enough to debug it."
-Brian W. Kernighan

"Catalin Lungu" wrote in message
news:e285pg$268$
Hola,
Quiero hacer lo siguiente.

public class A
{
public void M()
{
B b = new B();
b.Ejecuta(nMetodo);
}
public void nMetodo()
{
}
}

public class B
{
public B()
{}
public void Ejecuta(string nMetodo)
{
MiObjeto aaa = new MiObjeto();
aaa.Click += new EventHandler(nMetodo);
}
}

Bueno la ideea es sencilla pero no se como hacerlo. Quiero pasar el nombre
de un metodo, para que se ejecute cuando se desencadena el click del


objeto
aaa.

Gracias de antemano,
C.


Preguntas similares