确定参数是否在C#中使用反射使用“params”?

时间:2009-03-09 19:29:42

标签: c# .net reflection params

考虑这种方法签名:

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

如何确定WriteLine方法的“myObjects”参数使用params关键字并且可以接受变量参数?

3 个答案:

答案 0 :(得分:35)

检查其上是否存在[ParamArrayAttribute]

params的参数将始终是最后一个参数。

答案 1 :(得分:18)

检查ParameterInfo,如果已应用ParamArrayAttribute

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

答案 2 :(得分:9)

稍微更短且更易读的方式:

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