Maison >développement back-end >C++ >Comment puis-je utiliser Reflection en C# pour appeler une méthode statique sur une classe étant donné son nom sous forme de chaîne ?

Comment puis-je utiliser Reflection en C# pour appeler une méthode statique sur une classe étant donné son nom sous forme de chaîne ?

Linda Hamilton
Linda Hamiltonoriginal
2025-01-14 11:18:43754parcourir

How Can I Use Reflection in C# to Invoke a Static Method on a Class Given Its Name as a String?

Accès dynamique et appel de méthodes C# statiques via Reflection

Imaginez que vous ayez un nom de classe stocké sous forme de chaîne (par exemple, "MyClass") et que vous deviez appeler l'une de ses méthodes statiques. La réflexion fournit le mécanisme permettant d’obtenir ce comportement dynamique. Ce guide montre comment utiliser la réflexion pour récupérer une référence de classe à partir de son nom de chaîne et ensuite invoquer une méthode statique.

Utilisation de Type.GetType pour la récupération de classe

La méthode Type.GetType est la clé pour accéder dynamiquement à la classe. Il prend le nom de classe complet sous forme de chaîne et renvoie un objet Type représentant cette classe :

<code class="language-csharp">Type classType = Type.GetType("MyClass"); </code>

Invocation de méthode utilisant la réflexion

Une fois que vous avez l'objet Type, vous pouvez utiliser GetMethod pour obtenir un objet MethodInfo représentant la méthode statique que vous souhaitez invoquer :

<code class="language-csharp">MethodInfo methodInfo = classType.GetMethod("MyStaticMethod", BindingFlags.Static | BindingFlags.Public);</code>

Cela récupère la méthode nommée "MyStaticMethod", garantissant qu'il s'agit d'une méthode statique publique. Les BindingFlags précisent les critères de recherche.

Enfin, invoquez la méthode en utilisant Invoke :

<code class="language-csharp">methodInfo.Invoke(null, null); // null for static method, null for no parameters</code>

Pour les méthodes avec paramètres, transmettez un tableau d'objets comme deuxième argument à Invoke.

Considérations importantes :

  • Chargement de l'assembly : Assurez-vous que l'assembly contenant la classe est chargé dans le domaine d'application.
  • Gestion des erreurs : Enveloppez les appels de réflexion dans des blocs try-catch pour gérer les exceptions potentielles (par exemple, TypeLoadException, MethodNotFoundException).
  • Modificateurs d'accès : Respectez les modificateurs d'accès (public, privé, etc.) de la classe et de ses méthodes. Vous devrez peut-être ajuster le BindingFlags en conséquence.

En employant ces techniques, vous pouvez libérer la puissance de l'invocation de méthodes dynamiques en C#, permettant ainsi des applications flexibles et adaptables.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn