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?

Foi útil?

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
scroll top