Determinare se un parametro usa "params" usando reflection in C #?
-
06-07-2019 - |
Domanda
Considera questa firma del metodo:
public static void WriteLine(string input, params object[] myObjects)
{
// Do stuff.
}
Come posso determinare che il metodo WriteLine " myObjects " pararameter utilizza la parola chiave params e può accettare argomenti variabili?
Soluzione
Controlla l'esistenza di [ParamArrayAttribute]
su di esso.
Il parametro con params
sarà sempre l'ultimo parametro.
Altri suggerimenti
Controlla ParameterInfo , se ParamArrayAttribute è stato applicato ad esso:
static bool IsParams(ParameterInfo param)
{
return param.GetCustomAttributes(typeof (ParamArrayAttribute), false).Length > 0;
}
Un modo leggermente più breve e più leggibile:
static bool IsParams(ParameterInfo param)
{
return param.IsDefined(typeof(ParamArrayAttribute), false);
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow