Maison > développement back-end > C++ > Comment utiliser la réflexion pour invoquer des méthodes génériques avec des paramètres de type dynamique?

Comment utiliser la réflexion pour invoquer des méthodes génériques avec des paramètres de type dynamique?

DDD
Libérer: 2025-02-03 07:57:13
original
236 Les gens l'ont consulté

How to Use Reflection to Invoke Generic Methods with Dynamic Type Parameters?

Utilisation de réflexe dynamique appelant la méthode générique

Parce que les paramètres de type sont inconnus lors de la compilation, la méthode d'appel dynamique doit être reflétée. Pour atteindre cet objectif, suivez les étapes suivantes:

Appelez la méthode générique d'instance

Obtenez le type de classe de déclaration de méthode Scrang.

    Méthodinfo Utilisation de la méthode d'instance de récupération Reflex.
  1. Utilisez les paramètres de type spécifiés par le MakeGeRericMethod pour construire la méthode générique.
  2. Utilisez Invoke pour appeler la méthode générique sur l'instance.
  3. Appelez la méthode générique statique
Type myType = FindType(typeName);
MethodInfo method = typeof(Sample).GetMethod(nameof(Sample.GenericMethod));
MethodInfo generic = method.MakeGenericMethod(myType);
generic.Invoke(this, null);
Copier après la connexion

Méthodinfo en utilisant la méthode statique de la construction de réflexion.

Utilisez les paramètres de type spécifiés par le MakeGeRericMethod pour construire la méthode générique.
  1. Utilisez Invoke pour appeler la méthode générique statique.
  2. Veuillez noter que pour la méthode statique, le NULL est passé pour invoquer comme premier paramètre.
<注意> Autres précautions
MethodInfo method = typeof(Sample).GetMethod(nameof(Sample.StaticMethod));
MethodInfo generic = method.MakeGenericMethod(myType);
generic.Invoke(null, null);
Copier après la connexion

Pour les versions C # 4 et supérieures, l'utilisation de types dynamiques peut simplifier ce processus, en particulier lorsque le type inférieur possible. Cependant, dans certains types d'inférences (comme les exemples fournis), des réflexes peuvent toujours être nécessaires.

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 de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal