Determinar se um parâmetro usa "params" usando a reflexão em C#?
-
06-07-2019 - |
Pergunta
Considere esta assinatura do método:
public static void WriteLine(string input, params object[] myObjects)
{
// Do stuff.
}
Como posso determinar que o parâmetro "myObjects" do método Writeline usa a palavra -chave params e pode receber argumentos variáveis?
Solução
Verifique a existência de [ParamArrayAttribute]
nele.
O parâmetro com params
sempre será o último parâmetro.
Outras dicas
Verifica a ParameterInfo, E se Paramearrayattribute foi aplicado a ele:
static bool IsParams(ParameterInfo param)
{
return param.GetCustomAttributes(typeof (ParamArrayAttribute), false).Length > 0;
}
Uma maneira um pouco mais curta e mais legível:
static bool IsParams(ParameterInfo param)
{
return param.IsDefined(typeof(ParamArrayAttribute), false);
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow