¿Determinar si un parámetro usa "params" usando la reflexión en C #?
-
06-07-2019 - |
Pregunta
Considere la firma de este método:
public static void WriteLine(string input, params object[] myObjects)
{
// Do stuff.
}
¿Cómo puedo determinar que el método WriteLine " myObjects " pararameter usa la palabra clave params y puede tomar argumentos variables?
Solución
Verifique la existencia de [ParamArrayAttribute]
en él.
El parámetro con params
siempre será el último parámetro.
Otros consejos
Verifique ParameterInfo , si ParamArrayAttribute se le ha aplicado:
static bool IsParams(ParameterInfo param)
{
return param.GetCustomAttributes(typeof (ParamArrayAttribute), false).Length > 0;
}
Una forma un poco más corta y más legible:
static bool IsParams(ParameterInfo param)
{
return param.IsDefined(typeof(ParamArrayAttribute), false);
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow