你好,这个问题描述了我试图通过反射调用一个方法,这很好,如果它是一个void类型。但是string, bool等不能工作。还有一个返回类型。我没能找到任何有用的参考资料。
我有一个测试类,我用来调用一些测试方法。所有的空枪都很好用。但是其他的根本不叫。
internal class Test
{
public static void Print()
{
Console.WriteLine("Test");
Console.WriteLine("Testing an invoke method");
}
public static void CalcData()
{
Console.WriteLine("Test");
}
public static void DoSomething(int c, float f)
{
Console.WriteLine("Test");
}
public static string TestString(string s, int p, char f)
{
return "Happy Days";
}
}
在我的主方法我将调用t.GetMethod("Print").Invoke(t, null);
,但我不确定如何调用来传递参数,甚至获得返回类型。
对此提供一些见解将不胜感激。
看MethodInfo.Invoke
的签名
public object Invoke(
object obj,
object[] parameters
)
需要在parameters
object[]
中传递方法的参数。注意,该方法返回一个object
,您只需要将其强制转换为结果类型。
对TestString
的调用应该像这样:
var parameters = new object[]{"A string", 10, 'a'};
string result = (string) t.GetMethod("Print").Invoke(t, parameters);