Определение, использует ли параметр «params», используя отражение в C #? - PullRequest
24 голосов
/ 09 марта 2009

Рассмотрим подпись этого метода:

public static void WriteLine(string input, params object[] myObjects)
{
    // Do stuff.
}

Как я могу определить, что параметр myObjects метода WriteLine использует ключевое слово params и может принимать переменные аргументы?

Ответы [ 3 ]

35 голосов
/ 09 марта 2009

Проверьте наличие [ParamArrayAttribute] на нем.

Параметр с params всегда будет последним параметром.

18 голосов
/ 09 марта 2009

Проверьте ParameterInfo , если к нему применен ParamArrayAttribute :

static bool IsParams(ParameterInfo param)
{
    return param.GetCustomAttributes(typeof (ParamArrayAttribute), false).Length > 0;
}
9 голосов
/ 14 декабря 2016

Немного короче и удобочитаемее:

static bool IsParams(ParameterInfo param)
{
    return param.IsDefined(typeof(ParamArrayAttribute), false);
}
...