如何将Expression.Call与MethodInfo和泛型类型参数一起使用? 只有使用methodName重载的是typeArguments。
var methodInfo = typeof(MyClass).GetMethod("OutputTypeName");
var expression = Expression.Call(methodInfo);
Expression.Lambda<Action>(expression).Compile()();
public static class MyClass
{
public static void OutputTypeName<T>()
{
Console.WriteLine("Type: " + typeof(T).Name);
}
}
答案 0 :(得分:2)
您可以使用MethodInfo.MakeGenericMethod:
var methodInfo = typeof(MyClass).GetMethod("OutputTypeName");
var genericMethodInfo = methodInfo.MakeGenericMethod(typeof(int));
var expression = Expression.Call(genericMethodInfo);
...