如何将 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);
}
}
最佳答案
您可以使用 MethodInfo.MakeGenericMethod:
var methodInfo = typeof(MyClass).GetMethod("OutputTypeName");
var genericMethodInfo = methodInfo.MakeGenericMethod(typeof(int));
var expression = Expression.Call(genericMethodInfo);
...
关于c# - 带有 MethodInfo 和泛型类型参数的 Expression.Call,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40263341/