确定参数是否使用“ params”在C#中使用反射?
-
06-07-2019 - |
题
考虑这种方法签名:
public static void WriteLine(string input, params object[] myObjects)
{
// Do stuff.
}
如何确定WriteLine方法的“myObjects”?参数使用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);
}
不隶属于 StackOverflow