2011-02-09 10 views
6

Qual è il modo più efficace per chiedere a MethodInfo se accetta parametri e, in caso affermativo, quanti?Qual è il modo più efficace per chiedere a un MethodInfo quanti parametri ci vuole?

Le mie soluzioni attuali sarebbero: methodInfo.GetParameters().Any() e methodInfo.GetParameters().Count().

È questo il modo più efficiente?

Dal momento che in realtà non ho bisogno di nessuno degli oggetti ParameterInfo, c'è un modo per farlo senza una chiamata a GetParameters()?

risposta

10

I due elencati sono per LINQ. Any() restituisce bool - affermando che ce n'è almeno uno. Count() è utilizzato su qualsiasi IEnumerable<T>.

Length (la proprietà) sarà il più veloce perché GetParameters() restituisce ParameterInfo[].

Non sembra che MethodInfo abbia un altro modo per accedere al numero di parametri diversi da GetParameters().

+0

Ho aggiornato la questione. – smartcaveman

+0

Hai familiarità con MethodImplAttributes o sai se potrebbero essere utilizzati per determinarlo? – smartcaveman

+0

Io non sono personalmente. Non sembra che si applica. –

5

Se l'efficienza è importante perché non si memorizza solo il risultato in uno Dictionary<MethodInfo,int>? In questo modo hai solo bisogno di usare il riflesso una sola volta.

0

Se si desidera ottenere il conteggio dei parametri di una MethodInfo, quindi utilizzare il codice qui sotto

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