método statico por reflexión

25/04/2005 - 13:40 por José Cordero | Informe spam
Hola,
me puede indicar alguien como llamar a un método estático de una clase
abstracta por reflexión.

Intento:

type = a.GetType("Clase");

clase = Activator.CreateInstanceFrom(
Application.StartupPath + "\\NucleoTrabajo.dll","Clase",true,
System.Reflection.BindingFlags.Static, null,new
object[]{},null,null,null).Unwrap();

estados = (string [])clase.GetType().InvokeMember("MetodoEstatico",
System.Reflection.BindingFlags.InvokeMethod,
null,clase,new object[]{});

pero falla, me dice que no puede crear una instancia de la clase, me parece
razonable ya que es abstracta, pero como le indico que no quiero una
instancia sino el tipo para invocar un método estático?.

muchas gracias
 

Leer las respuestas

#1 Octavio Hernandez
25/04/2005 - 14:39 | Informe spam
José,

Esto funciona perfectamente:

private void button1_Click(object sender, System.EventArgs e)
{
Type t = typeof(X); // o GetType("X");
MethodInfo mi = t.GetMethod("ShowMessage");
mi.Invoke(null, new object[] { "Hola" });
}

La clase es:

public abstract class X
{
public static void ShowMessage(string s)
{
MessageBox.Show(s);
}
}

Para cargar primero el ensamblado, utiliza Assembly.Load().

Slds - Octavio

"José Cordero" escribió en el mensaje
news:
Hola,
me puede indicar alguien como llamar a un método estático de una clase
abstracta por reflexión.

Intento:

type = a.GetType("Clase");

clase = Activator.CreateInstanceFrom(
Application.StartupPath + "\\NucleoTrabajo.dll","Clase",true,
System.Reflection.BindingFlags.Static, null,new
object[]{},null,null,null).Unwrap();

estados = (string [])clase.GetType().InvokeMember("MetodoEstatico",
System.Reflection.BindingFlags.InvokeMethod,
null,clase,new object[]{});

pero falla, me dice que no puede crear una instancia de la clase, me
parece
razonable ya que es abstracta, pero como le indico que no quiero una
instancia sino el tipo para invocar un método estático?.

muchas gracias

Preguntas similares