如何解决变量泛型类型计数运行时反射
现在我有这个代码:
//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 语句,但我还没有找到一种方法来根据参数的数量(或基于任何运行时 int
)来选择 Action 通用重载。
有没有更优雅的方式/oneliner 来做这样的事情?
我不想使用调度表。
解决方法
正如我在调试器中看到的,actionType
可以通过以下方式获得:
var actionType = Type.GetType("System.Action`" + methodParams.Length);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。