如何通过反射调用一些方法没有任何参数和任何返回值?
以下是MSDN示例
// Define a class with a generic method.
public class Example
{
public static void Generic<T>()
{
Console.WriteLine("rnHere it is: {0}", "DONE");
}
}
typeof(??)应该包含什么?
MethodInfo miConstructed = mi.MakeGenericMethod(typeof(???));
谢谢! !
如果通过c#调用,则需要提供类型,例如:
Example.Generic<int>();
要求不变;简单地说,这一行将变成:
mi.MakeGenericMethod(typeof(int)).Invoke(null, null);
对于完整的工作说明:
class Example
{
public static void Generic<T>()
{
System.Console.WriteLine("rnHere it is: {0}", "DONE");
}
static void Main()
{
var mi = typeof (Example).GetMethod("Generic");
mi.MakeGenericMethod(typeof(int)).Invoke(null, null);
}
}
在能够调用泛型方法之前,您需要指定它的泛型参数。所以你传递你想要用作泛型参数的类型:
public class Example
{
public static void Generic<T>()
{
Console.WriteLine("The type of T is: {0}", typeof(T));
}
}
class Program
{
static void Main()
{
var mi = typeof(Example).GetMethod("Generic");
MethodInfo miConstructed = mi.MakeGenericMethod(typeof(string));
miConstructed.Invoke(null, null);
}
}
应该打印:
The type of T is: System.String