"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Comment puis-je invoquer dynamiquement des méthodes génériques avec des arguments de type déterminés d'exécution en C #?

Comment puis-je invoquer dynamiquement des méthodes génériques avec des arguments de type déterminés d'exécution en C #?

Publié le 2025-03-22
Parcourir:654

How Can I Dynamically Invoke Generic Methods with Runtime-Determined Type Arguments in C#?

Appelez des méthodes génériques avec des arguments de type dynamique

problème

Dans votre scénario, vous souhaitez parcourir une collection d'interfaces dans un espace de noms spécifique et invoquer dynamiquement une méthode générique pour chaque interface. Cependant, vous rencontrez des erreurs de temps de compilation en raison des arguments de type inconnu au moment de la compilation. Définition.

générer l'instance de méthode générique

: Appelez la méthode MakeGenericMethod sur la définition de la méthode générique pour générer l'instance de méthode spécifique pour l'argument de type souhaité.

  1. arguments.
  2. Exemple de code
  3. Utilisation du système; Utilisation de System.Linq; Utilisation de System.Reflection; classe de test de classe publique { public static void CallGeneric () { Console.writeLine ($ "type générique: {typeof (t)}"); } public static void main () { var assembly = assembly.getExecutingAssembly (); var interfaces = assembly.getTypes () .Where (t => t.Namespace == "myNamespace.interfaces"); var genericMethod = typeof (testclass) .getMethod ("callGeneric"); foreach (var interfacetype dans les interfaces) { var genericMethodInstance = genericMethod.MakeGenericMethod (interfacetype); génériquethodinstance.invoke (null, null); // Aucune cible ou argument nécessaire } } }
  4. Dans cet exemple:
  5. La méthode CallGeneric est définie comme une méthode générique qui imprime l'argument de type générique. Instance pour chaque type d'interface.
Nous invoquons l'instance de méthode générique sans aucune cible ni arguments car c'est une méthode statique sans aucun paramètre.

Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3