Maison > développement back-end > C++ > Comment appeler des méthodes génériques avec des paramètres de type dynamique en C #?

Comment appeler des méthodes génériques avec des paramètres de type dynamique en C #?

Mary-Kate Olsen
Libérer: 2025-02-03 07:55:09
original
658 Les gens l'ont consulté

How to Call Generic Methods with Dynamic Type Parameters in C#?

Appelez la méthode générique lorsque les paramètres de type sont déterminés lors de l'exécution.

De nombreux types d'applications sont traités avant le type inconnu avant l'exécution. Dans ce cas, l'utilisation de paramètres de type obtenue dynamiquement pour appeler la méthode générique est très importante. Cet article traite des meilleures pratiques pour réaliser cette tâche. En supposant la scène suivante: Dans la méthode

, nous devons utiliser

appeler la méthode générique

dans la variable

Example(). La méthode d'appel myType directement n'est pas possible. Type GenericMethod<T>() Afin d'appeler la méthode générique avec des paramètres de type dynamique, nous utilisons la réflexion. Tout d'abord, nous utilisons les métadonnées de la méthode d'acquisition . Ensuite, nous utilisons la méthode générique de construction GenericMethod<myType>() en fournissant des paramètres de type appropriés. Enfin, nous utilisons le appeler la méthode générique.

GetMethod() Si la méthode générique est statique, nous passons MakeGenericMethod() comme premier paramètre à Invoke(). Cette étape n'a rien à voir avec les méthodes génériques, qui est une pratique de réflexion générale.

MethodInfo method = typeof(Sample).GetMethod(nameof(Sample.GenericMethod));
MethodInfo generic = method.MakeGenericMethod(myType);
generic.Invoke(this, null);
Copier après la connexion
C # 4 a introduit l'inférence de type "dynamique", qui simplifie ce processus dans des scènes spécifiques. Cependant, lorsque l'inférence du type n'est pas disponible, il est toujours utile de comprendre la réflexion.

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