询问 MethodInfo 需要多少个参数的最有效方法是什么?
询问 MethodInfo 是否接受参数的最有效方法是什么?如果接受,有多少?
我当前的解决方案是:methodInfo.GetParameters().Any()
和methodInfo.GetParameters().Count()
。
这是最有效的方法吗?
由于我实际上不需要任何 ParameterInfo
对象,有没有办法在不调用 GetParameters()
的情况下执行此操作?
What is the most efficient way to ask a MethodInfo if it accepts parameters and, if so, how many?
My current solutions would be: methodInfo.GetParameters().Any()
and methodInfo.GetParameters().Count()
.
Is this the most efficient way?
Since I don't actually need any of the ParameterInfo
objects, is there a way to do this without a call to GetParameters()
?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
您列出的两个用于 LINQ。
Any()
返回bool
- 表明至少有一个。Count()
可在IEnumerable
上任意使用。Length
(属性)将是最快的,因为GetParameters()
返回ParameterInfo[]
。除了
GetParameters()
之外,MethodInfo
似乎没有任何其他方式来访问参数的数量。The two you listed are for LINQ.
Any()
returnsbool
- stating that there is at least one.Count()
is used any onIEnumerable<T>
.Length
(the property) will be the fastest becauseGetParameters()
returnsParameterInfo[]
.It does not appear that
MethodInfo
have any other way to access the number of parameters other thanGetParameters()
.如果效率很重要,为什么不将结果缓存在
Dictionary
中?这样你只需要使用反射一次。If efficiency matters why don't you just cache the result in a
Dictionary<MethodInfo,int>
? That way you only need to use reflection only once.如果您想获取
MethodInfo
的参数数量,请使用以下代码If you want to get the count of parameters of a
MethodInfo
, then use the below code