如果MethodInfo接受参数,那么询问MethodInfo的最有效方法是什么?如果接受,有多少?
我目前的解决方案是:methodInfo.GetParameters().Any()
和methodInfo.GetParameters().Count()
。
这是最有效的方式吗?
由于我实际上不需要任何ParameterInfo
个对象,有没有办法在不调用GetParameters()
的情况下执行此操作?
答案 0 :(得分:11)
您列出的两个用于LINQ。 Any()
返回bool
- 说明至少有一个。在Count()
上使用IEnumerable<T>
。
Length
(属性)将是最快的,因为GetParameters()
返回ParameterInfo[]
。
MethodInfo
似乎没有任何其他方式可以访问GetParameters()
以外的参数数量。
答案 1 :(得分:5)
如果效率很重要,为什么不将结果缓存到Dictionary<MethodInfo,int>
?这样你只需要使用一次反射。
答案 2 :(得分:0)
如果您想获得MethodInfo
的参数计数,请使用以下代码
int intLength = mi.GetParameters().Length; // where mi is a variable of type MethodInfo