Appel de méthodes statiques avec Reflection
Reflection fournit un mécanisme puissant pour accéder et manipuler les types .NET et leurs membres au moment de l'exécution. L'une de ces tâches consiste à invoquer les méthodes statiques d'une classe. Cet article répond au besoin spécifique d'appeler des méthodes statiques dans un espace de noms spécifique (mySolution.Macros) à l'aide de la réflexion.
Contexte
Dans l'extrait de code fourni, l'objectif est pour parcourir une liste de classes statiques dans un espace de noms spécifique et appeler leurs méthodes Run. Cependant, comme les méthodes sont statiques, l'approche standard consistant à créer une instance puis à invoquer la méthode n'est pas applicable.
Solution
La clé pour appeler des méthodes statiques avec la réflexion est de comprendre que le premier argument passé à MethodInfo.Invoke est ignoré pour les méthodes statiques. Par conséquent, le code modifié ci-dessous appelle avec succès les méthodes statiques :
foreach (var tempClass in macroClasses) { // using reflection I will be able to run the method as: tempClass.GetMethod("Run").Invoke(null, null); }
Comme mentionné dans un commentaire, il est recommandé de s'assurer que la méthode est bien statique avant d'appeler GetMethod :
tempClass.GetMethod("Run", BindingFlags.Public | BindingFlags.Static).Invoke(null, null);
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!