问题
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()
?
回答1:
The two you listed are for LINQ. Any()
returns bool
- stating that there is at least one. Count()
is used any on IEnumerable<T>
.
Length
(the property) will be the fastest because GetParameters()
returns ParameterInfo[]
.
It does not appear that MethodInfo
have any other way to access the number of parameters other than GetParameters()
.
回答2:
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.
回答3:
If you want to get the count of parameters of a MethodInfo
, then use the below code
int intLength = mi.GetParameters().Length; // where mi is a variable of type MethodInfo
来源:https://stackoverflow.com/questions/4949503/what-is-the-most-efficient-way-to-ask-a-methodinfo-how-many-parameters-it-takes