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 ?
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>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!