执行以下代码时,我收到此错误“无法对ContainsGenericParameters为true的类型或方法执行后期绑定操作。”
class Program
{
static void Main(string[] args)
{
MethodInfo MI = typeof(MyClass).GetMethod("TestProc");
MI.MakeGenericMethod(new [] {typeof(string)});
MI.Invoke(null, new [] {"Hello"});
}
}
class MyClass
{
public static void TestProc<T>(T prefix)
{
Console.WriteLine("Hello");
}
}
上面的代码只是我面临的实际问题的缩放版本。请帮忙。
答案 0 :(得分:28)
您正在调用MethodInfo.MakeGenericMethod
,但丢弃了返回值。 返回值本身就是您想要Invoke
的方法:
MethodInfo genericMethod = MI.MakeGenericMethod(new[] { typeof(string) });
genericMethod.Invoke(null, new[] { "Hello" });
答案 1 :(得分:3)
您发布的代码唯一的问题是:
MI.MakeGenericMethod(new [] {typeof(string)});
应该是
MI = MI.MakeGenericMethod(new [] {typeof(string)});
你没有抓住对'烘焙'通用的引用。