9

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

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

这是最有效的方法吗?

由于我实际上不需要任何ParameterInfo对象,有没有办法在不调用的情况下做到这一点GetParameters()

4

3 回答 3

14

您列出的两个用于 LINQ。Any()返回bool- 说明至少有一个。Count()用于任何IEnumerable<T>

Length(属性)将是最快的,因为GetParameters()返回ParameterInfo[]

似乎没有MethodInfo任何其他方法可以访问除 之外的参数数量GetParameters()

于 2011-02-09T19:29:08.083 回答
5

如果效率很重要,为什么不将结果缓存在 a 中Dictionary<MethodInfo,int>?这样你只需要使用一次反射。

于 2011-02-09T20:10:41.997 回答
1

如果要获取 a 的参数计数MethodInfo,请使用以下代码

int intLength = mi.GetParameters().Length; // where mi is a variable of type MethodInfo
于 2014-12-01T06:53:34.987 回答