Определение, использует ли параметр & # 8220; params & # 8221; используя отражение в C #?

StackOverflow https://stackoverflow.com/questions/627656

  •  06-07-2019
  •  | 
  •  

Вопрос

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

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

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

Это было полезно?

Решение

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

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

Другие советы

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

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

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

static bool IsParams(ParameterInfo param)
{
    return param.IsDefined(typeof(ParamArrayAttribute), false);
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top