2016-10-26 12 views
1

MethodInfoとジェネリック型引数でExpression.Callを使用するにはどうすればよいですか? methodNameによるオーバーロードだけがtypeArgumentsを持ちます。MethodInfoとジェネリック型引数を持つExpression.Call

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); 
    } 
} 

答えて

2

あなたはMethodInfo.MakeGenericMethodを使用することができます。

var methodInfo = typeof(MyClass).GetMethod("OutputTypeName"); 
var genericMethodInfo = methodInfo.MakeGenericMethod(typeof(int)); 
var expression = Expression.Call(genericMethodInfo); 
... 
関連する問題