询问MethodInfo需要多少参数的最有效方法是什么?

时间:2011-02-09 19:28:01

标签: c# performance reflection methodinfo

如果MethodInfo接受参数,那么询问MethodInfo的最有效方法是什么?如果接受,有多少?

我目前的解决方案是:methodInfo.GetParameters().Any()methodInfo.GetParameters().Count()

这是最有效的方式吗?

由于我实际上不需要任何ParameterInfo个对象,有没有办法在不调用GetParameters()的情况下执行此操作?

3 个答案:

答案 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