如何在没有任何参数和任何返回值的情况下通过Reflection调用某些方法?
以下是MSDN sample
// Define a class with a generic method.
public class Example
{
public static void Generic<T>()
{
Console.WriteLine("\r\nHere it is: {0}", "DONE");
}
}
什么应该在typeof(???)中呢?
MethodInfo miConstructed = mi.MakeGenericMethod(typeof(???));
谢谢!!!
答案 0 :(得分:3)
在能够调用泛型方法之前,您需要指定其泛型参数。所以你传递了你想要用作泛型参数的类型:
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
答案 1 :(得分:3)
如果您通过C#调用它,则需要提供类型,例如:
Example.Generic<int>();
该要求不会改变;简单地说,那条线将成为:
mi.MakeGenericMethod(typeof(int)).Invoke(null, null);
有关完整,有效的说明:
class Example
{
public static void Generic<T>()
{
System.Console.WriteLine("\r\nHere it is: {0}", "DONE");
}
static void Main()
{
var mi = typeof (Example).GetMethod("Generic");
mi.MakeGenericMethod(typeof(int)).Invoke(null, null);
}
}