Maison >développement back-end >C++ >Comment puis-je instancier un type générique en C# avec une variable comme paramètre de type ?

Comment puis-je instancier un type générique en C# avec une variable comme paramètre de type ?

Barbara Streisand
Barbara Streisandoriginal
2025-01-13 06:03:43120parcourir

How Can I Instantiate a Generic Type in C# with a Variable as the Type Parameter?

instancier un type générique C# en utilisant des variables comme paramètres de type

En C#, il est souvent nécessaire de créer des instances de types génériques basées sur des paramètres de type déterminés dynamiquement. Cependant, fournir les valeurs des paramètres de type directement dans le mot-clé new n'est pas possible et entraîne l'erreur suivante :

<code>'List<k>' is a 'Type' but is used like a 'Type'</k></code>

Solution

Pour surmonter cette limitation, la réflexion peut être utilisée pour construire explicitement des types génériques :

  1. Récupérer le type d'une classe générique (par exemple, List<T>) :

    <code class="language-C#">Type genericListType = typeof(List<>);</code>
  2. Remplacez <T> par le type souhaité pour obtenir un type générique concret :

    <code class="language-C#">Type specificListType = genericListType.MakeGenericType(typeof(double));</code>
  3. Utilisez la réflexion pour créer une instance d'un type générique spécifique :

    <code class="language-C#">var list = Activator.CreateInstance(specificListType);</code>

Avec cette approche, vous pouvez créer des instances d'un type générique qui utilisent des paramètres de type pilotés par des variables.

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