【问题标题】:Expression.Call with MethodInfo and generic type arguments带有 MethodInfo 和泛型类型参数的 Expression.Call
【发布时间】:2016-10-26 13:15:49
【问题描述】:

如何将 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);
    }
}

【问题讨论】:

    标签: c# .net linq generics expression


    【解决方案1】:

    你可以使用 MethodInfo.MakeGenericMethod:

    var methodInfo = typeof(MyClass).GetMethod("OutputTypeName");
    var genericMethodInfo = methodInfo.MakeGenericMethod(typeof(int));
    var expression = Expression.Call(genericMethodInfo);
    ...
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-10-06
      • 1970-01-01
      • 2014-08-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多