Utiliser Reflection pour récupérer des références de classe C# à partir de chaînes
La réflexion C# fournit un mécanisme puissant pour accéder et manipuler dynamiquement les informations de type d'exécution. Cela inclut la récupération d'une référence de classe en utilisant uniquement sa représentation sous forme de chaîne.
Le processus :
La méthode principale pour cette tâche est Type.GetType()
. Cette méthode accepte une chaîne contenant le nom du type complet et renvoie un objet Type
représentant ce type.
Exemple :
Disons que vous avez une classe nommée FooClass
. Pour obtenir son Type
objet :
<code class="language-csharp">string className = "FooClass"; Type type = Type.GetType(className);</code>
Pour accéder à une méthode statique dans FooClass
(par exemple, MyMethod
), utilisez GetMethod()
:
<code class="language-csharp">MethodInfo method = type.GetMethod("MyMethod", BindingFlags.Static | BindingFlags.Public);</code>
Enfin, invoquez la méthode en utilisant Invoke()
:
<code class="language-csharp">method.Invoke(null, null); // null for static methods, null for no parameters</code>
Rappelez-vous que null
est utilisé comme premier argument pour les méthodes statiques (aucune instance requise) et que le deuxième argument est un tableau de paramètres (nul si la méthode ne prend aucun paramètre).
Gestion des assemblages externes :
L'exemple ci-dessus suppose que FooClass
réside dans le même assembly. Pour les types situés dans différents assemblys, vous devez fournir le nom de l’assembly dans le nom de type complet. Le format exact dépend de l'emplacement de l'assemblage. Consultez la documentation MSDN pour obtenir des conseils détaillés sur la spécification des noms d'assembly dans la méthode Type.GetType()
.
Exploration plus approfondie :
Pour une compréhension plus approfondie de la réflexion C#, reportez-vous à la documentation officielle de Microsoft sur Type.GetType()
, MethodInfo.GetMethod()
et MethodInfo.Invoke()
. Ces ressources offrent des détails complets et des scénarios d'utilisation avancés.
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!