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: -
<code class="language-csharp">MethodInfo method = typeof(Sample).GetMethod(nameof(Sample.GenericMethod));</code>
Fournir des paramètres de type pour construire des méthodes génériques: -
<code class="language-csharp">MethodInfo generic = method.MakeGenericMethod(myType);</code>
Appelez la méthode générique du constructeur: -
<code class="language-csharp">generic.Invoke(this, null);</code>
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: -
<code class="language-csharp">MethodInfo method = typeof(Sample).GetMethod(nameof(Sample.StaticMethod));</code>
Utiliser le type de paramètre Construire une méthode générique: -
<code class="language-csharp">MethodInfo generic = method.MakeGenericMethod(myType);</code>
Appelez la méthode générique du constructeur.
-
<code class="language-csharp">generic.Invoke(null, null);</code>
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!
Déclaration:Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn