变量泛型类型计数运行时反射

Variable generic type count runtime reflection

现在我有这个代码:

//some Method detection here..

var methodParams = method.GetParameters();
Type actionType = null;

switch(methodParams.Length)
{
    case 1:
        actionType = typeof(Action<>);
        break;

    case 2:
        actionType = typeof(Action<,>);
        break;

    case 3:
        actionType = typeof(Action<,,>);
        break;

    case 4:
        actionType = typeof(Action<,,,>);
        break;

    case 5:
        actionType = typeof(Action<,,,,>);
        break;
}

var actionGenericType = actionType.MakeGenericType(methodParams.Select(x => x.ParameterType).ToArray());

我不喜欢这个 switch 语句,但我还没有找到一种方法来 select 基于参数数量(或基于任何运行时 int)的 Action 泛型重载.

有没有更优雅的方式/oneliner 来做这样的事情?

我不想使用调度程序table。

正如我在调试器中看到的那样,actionType 可以通过以下方式获得:

var actionType = Type.GetType("System.Action`" + methodParams.Length);