Vous souhaitez appeler une méthode générique avec un argument de type qui n’est connu qu’au moment de l’exécution. Par exemple, vous avez une liste d'interfaces et vous souhaitez appeler une méthode générique pour chaque interface.
Étant donné que l'argument de type n'est pas connu à la compilation temps, vous ne pouvez pas utiliser l’invocation de méthode traditionnelle avec des génériques. Au lieu de cela, vous devez utiliser la réflexion pour appeler dynamiquement la méthode générique en fonction de l'argument de type obtenu lors de l'exécution.
Voici comment implémenter cette approche :
// Original Method public void Method<T>() { // Method body } // Main Method var assembly = Assembly.GetExecutingAssembly(); var interfaces = assembly.GetTypes().Where(t => t.Namespace == "MyNamespace.Interfaces"); foreach (var interfaceType in interfaces) { MethodInfo genericMethod = typeof(Test).GetMethod("Method"); MethodInfo specificMethod = genericMethod.MakeGenericMethod(interfaceType); specificMethod.Invoke(null, null); // No arguments for this example }
En utilisant la réflexion, cette approche vous permet d'appeler dynamiquement la méthode générique avec des arguments de type inconnu au moment de l'exécution.
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!