Как наиболее эффективно спросить у MethodInfo, сколько параметров требуется? - PullRequest
7 голосов
/ 09 февраля 2011

Как наиболее эффективно спросить у MethodInfo, принимает ли он параметры и, если да, то сколько?

Мои текущие решения будут: methodInfo.GetParameters().Any() и methodInfo.GetParameters().Count().

Это самый эффективный способ?

Поскольку на самом деле мне не нужен ни один из объектов ParameterInfo, есть ли способ сделать это без вызова GetParameters()?

Ответы [ 3 ]

11 голосов
/ 09 февраля 2011

Два из перечисленных вами для LINQ.Any() возвращает bool - заявив, что есть хотя бы один.Count() используется в любом случае IEnumerable<T>.

Length (свойство) будет самым быстрым, поскольку GetParameters() возвращает ParameterInfo[].

Похоже, что у MethodInfo нет другого способа получить доступ к ряду параметров, кроме GetParameters().

5 голосов
/ 09 февраля 2011

Если эффективность имеет значение, почему бы вам просто не кэшировать результат в Dictionary<MethodInfo,int>? Таким образом, вам нужно использовать отражение только один раз.

0 голосов
/ 01 декабря 2014

Если вы хотите получить количество параметров для MethodInfo, используйте приведенный ниже код

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