una otra metodos metodo llamar funciones funcion firma extendidos ejemplos definicion como clase c#

otra - metodos extendidos c#



Llamar a un método estático usando un Tipo (2)

Compruebe en la clase MethodInfo y los métodos GetMethod() en Type.

Hay una cantidad de sobrecargas diferentes para diferentes situaciones.

¿Cómo llamo a un método estático de un Type , suponiendo que conozco el valor de la variable Type y el nombre del método estático?

public class FooClass { public static FooMethod() { //do something } } public class BarClass { public void BarMethod(Type t) { FooClass.FooMethod() //works fine if (t is FooClass) { t.FooMethod(); //should call FooClass.FooMethod(); compile error } } }

Entonces, dado un Type t , el objetivo es llamar a FooMethod() en la clase que es de Type t . Básicamente, necesito invertir el operador typeof() .


MethodInfo.Invoke llamar MethodInfo.Invoke método MethodInfo.Invoke :

public class BarClass { public void BarMethod(Type t) { FooClass.FooMethod() //works fine if (t == typeof(FooClass)) { t.GetMethod("FooMethod").Invoke(null, null); //null - means calling static method } } }

Por supuesto, en el ejemplo anterior, también puede llamar a FooClass.FooMethod ya que no tiene sentido utilizar la reflexión para eso. La siguiente muestra tiene más sentido:

public class BarClass { public void BarMethod(Type t, string method) { var methodInfo = t.GetMethod(method); if (methodInfo != null) { methodInfo.Invoke(null, null); //null - means calling static method } } } public class Foo1Class { static public Foo1Method(){} } public class Foo2Class { static public Foo2Method(){} } //Usage new BarClass().BarMethod(typeof(Foo1Class), "Foo1Method"); new BarClass().BarMethod(typeof(Foo2Class), "Foo2Method");