Maison >développement back-end >C++ >Comment appeler des méthodes génériques avec des arguments de type dynamique en C# à l'aide de Reflection ?
Appel de méthodes génériques avec des arguments de type dynamiques
En C#, l'appel de méthodes génériques avec des arguments de type connus uniquement au moment de l'exécution nécessite de tirer parti des capacités de réflexion. Le défi initial impliquait de parcourir des interfaces dans un espace de noms spécifique et d'invoquer une méthode générique en utilisant ces interfaces comme arguments.
Pour surmonter ce problème, suivez ces étapes :
Par exemple, considérons le code suivant :
// Get the generic method MethodInfo method = typeof(Test).GetMethod("CallMe"); // Get the list of interfaces in the specified namespace var types = typeof(Test).Assembly .GetTypes() .Where(t => t.Namespace == "Interfaces"); // Loop through the interfaces foreach (Type type in types) { // Create a specialized generic method MethodInfo genericMethod = method.MakeGenericMethod(type); // Invoke the method with no target or arguments genericMethod.Invoke(null, null); }
Dans cet exemple, nous récupérons la méthode générique "CallMe", créez des versions spécialisées pour chaque type d'interface et invoquez-les de manière réfléchie.
Remarque : Si le type d'interface que vous utilisez est lui-même générique, utilisez MakeGenericType au lieu de MakeGenericMethod, en passant le arguments de type approprié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!