Déterminer si un paramètre utilise & # 8220; params & # 8221; utiliser la réflexion en C #?
-
06-07-2019 - |
Question
Considérons cette signature de méthode:
public static void WriteLine(string input, params object[] myObjects)
{
// Do stuff.
}
Comment puis-je déterminer que "myObjects" dans la méthode WriteLine? Pararameter utilise le mot-clé params et peut prendre des arguments variables?
La solution
Vérifiez l'existence de [ParamArrayAttribute]
dessus.
Le paramètre avec params
sera toujours le dernier paramètre.
Autres conseils
Vérifiez le ParameterInfo , si ParamArrayAttribute lui a été appliqué:
static bool IsParams(ParameterInfo param)
{
return param.GetCustomAttributes(typeof (ParamArrayAttribute), false).Length > 0;
}
Une manière légèrement plus courte et plus lisible:
static bool IsParams(ParameterInfo param)
{
return param.IsDefined(typeof(ParamArrayAttribute), false);
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow