Maison > développement back-end > C++ > Comment puis-je créer dynamiquement une instance de type générique au moment de l'exécution ?

Comment puis-je créer dynamiquement une instance de type générique au moment de l'exécution ?

Patricia Arquette
Libérer: 2025-01-13 07:17:42
original
221 Les gens l'ont consulté

How Can I Dynamically Create a Generic Type Instance at Runtime?

Créer dynamiquement des instances de types génériques au moment de l'exécution

Dans certains cas, il peut être nécessaire de créer dynamiquement des instances d'un type générique basé sur un type déterminé lors de l'exécution. Cela peut être difficile car les types génériques sont généralement définis au moment de la compilation.

Une façon d’y parvenir est d’utiliser la réflexion. Voici une solution de contournement qui vous permet de créer une instance de type générique à l'aide d'une variable contenant le type cible :

<code class="language-csharp">Type k = typeof(double);
Type genericListType = typeof(List<>); // 注意这里<>
var specificListType = genericListType.MakeGenericType(k);
var list = Activator.CreateInstance(specificListType);</code>
Copier après la connexion
La méthode

MakeGenericType accepte un seul paramètre Type et renvoie un nouvel objet Type qui représente un type générique avec le paramètre de type spécifié. Dans ce cas, on passe le double de Type pour préciser le type de cible.

Après avoir obtenu le type générique spécifique, nous pouvons utiliser la méthode Activator.CreateInstance pour instancier un objet de ce type. Cette méthode utilise la réflexion pour créer dynamiquement une nouvelle instance du type d'objet spécifié.

Avec cette approche, vous pouvez créer dynamiquement des instances de types génériques basées sur des types déterminés au moment de l'exécution, ce qui permet une plus grande flexibilité et une plus grande adaptabilité du code. Notez que typeof(List) doit être remplacé par typeof(List<>) pour représenter correctement le type générique List<T>.

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!

source:php.cn
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