J'ai une classe avec une méthode statique privée avec un paramètre facultatif. Comment puis-je l'appeler d'une autre classe via une réflexion? Il y a une similaire question a >, mais il n'adresse pas la méthode statique ou les paramètres facultatifs. Comment puis-je appeler foo.bar ("test") code> et
foo.bar () code> (par exemple, sans passer le paramètre facultatif)? P> P>
3 Réponses :
Les valeurs de paramètre facultatif en C # sont compilées par injection de ces valeurs à l'ASCITE. C'est à dire. Même si votre code est le compilateur génère en fait un appel comme p> lors de la recherche de la méthode, vous devez traiter les paramètres facultatifs comme Paramètres réguliers. p> Si vous savez exactement quelles valeurs vous souhaitez appeler la méthode avec vous pouvez faire: p> Si vous n'avez que certains des paramètres et que vous souhaitez respecter les valeurs des par défaut, vous devez inspecter la méthode paramètreInfo code>
Pour voir si les paramètres sont facultatifs et quelles sont ces valeurs. Par exemple, pour imprimer les valeurs par défaut de ces paramètres, vous pouvez utiliser le code suivant: p>
Qu'en est-il de la partie de la méthode statique?
Utilisation de cette classe Vous pouvez utiliser le code suivant pour l'appeler avec les valeurs par défaut p> si la méthode avait quelques-unes paramètres non facultatifs, vous devrez les insérer dans le tableau de paramètres avant d'appeler la méthode. p> par exemple par exemple p> vous demanderait de faire p> avant d'invoquer p> p>
Quelque chose que j'ai écrit pour mes tests de l'unité: Appelez-le comme pour appeler une fonction statique privée: p> var success = TryInvokeMethod(typeof(Foo), null, "MyPrivateStaticFunc", BindingFlags.NonPublic | BindingFlags.Static, out result, arg1ToPass);