Подтвердить что ты не робот

Определение, использует ли параметр "params", используя отражение в С#?

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

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

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

4b9b3361

Ответ 1

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

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

Ответ 2

Отметьте ParameterInfo, если ParamArrayAttribute был применен к нему:

static bool IsParams(ParameterInfo param)
{
    return param.GetCustomAttributes(typeof (ParamArrayAttribute), false).Length > 0;
}

Ответ 3

Немного более короткий и читаемый способ:

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