Invoquer des méthodes statiques avec réflexion
Problème :
Vous possédez plusieurs classes statiques au sein du espace de noms mySolution.Macros, chacune contenant des méthodes statiques telles que :
public static class Indent { public static void Run() { // implementation } }
Votre L'objectif est d'invoquer ces méthodes en utilisant la réflexion, même si elles sont statiques.
Solution :
Pour invoquer des méthodes statiques avec réflexion tout en préservant leur nature statique, utilisez ce qui suit approche :
foreach (var tempClass in macroClasses) { // Note that the first argument is ignored for static methods tempClass.GetMethod("Run").Invoke(null, null); }
Comme mentionné dans la documentation de MethodInfo.Invoke, le premier argument est redondant pour les méthodes statiques, vous pouvez donc passer en toute sécurité null.
Drapeaux de liaison :
Il est important de noter que vous devrez peut-être spécifier des indicateurs de liaison lors de l'appel de la méthode, comme suggéré dans le commentaire :
tempClass.GetMethod("Run", BindingFlags.Public | BindingFlags.Static).Invoke(null, null);
Cela garantit que la méthode est publique et statique, ce qui est nécessaire pour un appel correct.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!