Comment exécuter une méthode statique privée avec des paramètres optionnels par réflexion?
J'ai une classe avec un private static méthode avec un paramètre facultatif. Comment puis-je l'appeler à partir d'une autre classe par la Réflexion? Il est similaire questionmais il n'a pas d'adresse statique de la méthode ou des paramètres facultatifs.
public class Foo {
private static void Bar(string key = "") {
//do stuff
}
}
Comment puis-je invoquer Foo.Bar("test")
et Foo.Bar()
(par exemple, sans passer le paramètre facultatif)?
source d'informationauteur AngryHacker | 2011-10-19
Vous devez vous connecter pour publier un commentaire.
Des valeurs de paramètres facultatifs en C# sont compilées par l'injection de ces valeurs à l'callsite. I. e. même si votre code est
Le compilateur génère un appel comme
Lors de la recherche de la méthode que vous avez besoin pour traiter les paramètres facultatifs, comme réguliers paramètres.
Si vous savez exactement quelles sont les valeurs que vous souhaitez appeler la méthode que vous pouvez faire:
Si vous avez seulement quelques-uns des paramètres et souhaitez l'honneur les valeurs de ceux par défaut, vous devez inspecter la méthode
ParameterInfo
objets pour voir si les paramètres sont optionnels et quelles sont ces valeurs. Par exemple, pour imprimer les valeurs par défaut de ces paramètres, vous pouvez utiliser le code suivant:À l'aide de cette classe
Vous pouvez utiliser le code suivant pour l'appeler avec les valeurs par défaut
Si la méthode avait certains non-paramètres facultatifs, vous devez les insérer dans les paramètres de la matrice avant d'appeler la méthode.
E. g
Serait vous obliger à faire
Avant d'invoquer