Déterminer si un paramètre utilise & # 8220; params & # 8221; utiliser la réflexion en C #?

StackOverflow https://stackoverflow.com/questions/627656

  •  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?

Était-ce utile?

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