假设我有一个像这样的类,包含一个带有 out 参数的泛型方法:
public class C
{
public static void M<T>(IEnumerable<T> sequence, out T result)
{
Console.WriteLine("Test");
result = default(T);
}
}
通过阅读其他几个问题的答案(如何使用反射来调用泛型方法?和使用输出参数对静态重载方法进行反射),我认为我可以通过反射调用该方法,如下所示:
// get the method
var types = new[] { typeof(IEnumerable<int>), typeof(int).MakeByRefType() };
MethodInfo mi = typeof(C).GetMethod(
"M", BindingFlags.Static, Type.DefaultBinder, types, null);
// convert it to a generic method
MethodInfo generic = mi.MakeGenericMethod(new[] { typeof(int) });
// call it
var parameters = new object[] { new[] { 1 }, null };
generic.Invoke(null, parameters);
但是mi
回来为空。我试过在数组中使用object
而不是,但这也不起作用。int
types
如何在调用之前MakeGenericMethod
为泛型方法指定类型(out 参数所需) ?