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 ?
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 :
try-catch
pour gérer les exceptions potentielles (par exemple, TypeLoadException
, MethodNotFoundException
).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!