2011-02-09 17 views
6

¿Cuál es la forma más eficiente de preguntar a un MethodInfo si acepta parámetros y, de ser así, cuántos?¿Cuál es la forma más eficiente de preguntar a un MethodInfo cuántos parámetros se necesitan?

Mis soluciones actuales serían: methodInfo.GetParameters().Any() y methodInfo.GetParameters().Count().

¿Es esta la manera más eficiente?

Dado que en realidad no necesito ninguno de los objetos ParameterInfo, ¿hay alguna manera de hacerlo sin llamar al GetParameters()?

Respuesta

10

Las dos que mencionas son para LINQ. Any() devuelve bool - indicando que hay al menos uno. Count() se usa cualquiera en IEnumerable<T>.

Length (la propiedad) será el más rápido porque GetParameters() devuelve ParameterInfo[].

No parece que MethodInfo tenga otra forma de acceder al número de parámetros que no sea GetParameters().

+0

He actualizado la cuestión. – smartcaveman

+0

¿Está familiarizado con MethodImplAttributes o sabe si se podrían usar para determinar esto? – smartcaveman

+0

No soy personalmente. No parece que se aplique. –

5

Si la eficiencia es importante, ¿por qué no guarda el resultado en caché en un Dictionary<MethodInfo,int>? De esa manera solo necesitas usar el reflejo una sola vez.

0

Si desea obtener el recuento de los parámetros de un MethodInfo, a continuación, utilizar el código de abajo

int intLength = mi.GetParameters().Length; // where mi is a variable of type MethodInfo 
Cuestiones relacionadas