en utilisant un type dynamique de la variable de type C # Méthode de génération
Lorsque vous utilisez la méthode générique, vous rencontrez souvent le type de paramètres lors de la compilation, mais déterminez dynamiquement le paramètre de type pendant l'exécution. Reflex fournit une solution puissante pour faire face à ce défi.
La solution de génétiquement génétiquement génétique
Pour utiliser le type stocké dans les variables myType pour appeler la méthode générique génériqueMedhod
, vous pouvez utiliser les méthodes suivantes:
Méthodinfo Utilisation de la méthode de réflexion: -
MethodInfo method = typeof(Sample).GetMethod(nameof(Sample.GenericMethod));
Copier après la connexion
Fournir des paramètres de type pour construire des méthodes génériques: -
MethodInfo generic = method.MakeGenericMethod(myType);
Copier après la connexion
Copier après la connexion
Appelez la méthode générique du constructeur: -
generic.Invoke(this, null);
Copier après la connexion
Méthode statique Solution statiquetod
pour appeler la méthode générique statique staticMethod
, veuillez suivre les étapes similaires:
Méthodinfo pour obtenir des méthodes génériques statiques: -
MethodInfo method = typeof(Sample).GetMethod(nameof(Sample.StaticMethod));
Copier après la connexion
Utiliser le type de paramètre Construire une méthode générique: -
MethodInfo generic = method.MakeGenericMethod(myType);
Copier après la connexion
Copier après la connexion
Appelez la méthode générique du constructeur.
-
generic.Invoke(null, null);
Copier après la connexion
C # 4 et Mots-clés dynamiques apportés par Simplified
Bien que la réflexion fournit une solution puissante pour appeler la méthode générique, elle peut impliquer beaucoup de code modèle. Cependant, à partir de C # 4, vous pouvez utiliser des mots clés dynamiques pour simplifier ce processus. Si l'inférence du type est disponible, l'utilisation de dynamique peut réduire considérablement le code requis.
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!