Dans votre scénario, vous souhaitez parcourir une collection d'interfaces dans un espace de noms spécifique et invoquez dynamiquement une méthode générique pour chaque interface. Cependant, vous rencontrez des erreurs de compilation en raison d'arguments de type inconnus au moment de la compilation.
Pour appeler dynamiquement des méthodes génériques avec des arguments de type connus à l'exécution, vous pouvez utiliser la réflexion comme suit :
using System; using System.Linq; using System.Reflection; public class TestClass { public static void CallGeneric<T>() { Console.WriteLine($"Generic type: {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 in interfaces) { var genericMethodInstance = genericMethod.MakeGenericMethod(interfaceType); genericMethodInstance.Invoke(null, null); // No target or arguments needed } } }
Dans cet exemple :
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!