<T>
générique en utilisant une variable contenant le type Créer une instance d'un type générique à l'aide d'une variable contenant le type est une technique utile dans des scénarios tels que la génération dynamique d'informations de type. Bien que le code donné dans la question, qui tente de créer une instance List<k>
(où k est une variable de type Type
), ne puisse pas être compilé, il existe d'autres moyens d'obtenir cette fonctionnalité.
Une solution possible consiste à utiliser la méthode MakeGenericType
sur la définition de type générique. Cette méthode accepte un ensemble de paramètres de type et renvoie un nouveau type qui est une version du type générique instancié à l'aide de ces paramètres. Dans ce cas, le code ressemblerait à ceci :
<code class="language-csharp">var genericListType = typeof(List<>); var specificListType = genericListType.MakeGenericType(typeof(double));</code>
genericListType
contiennent des définitions de types List<T>
génériques, et les méthodes MakeGenericType
renvoient des types List<double>
spécialisés.
Après avoir créé un type générique spécifique, vous pouvez utiliser la classe Activator
pour créer des instances. La méthode CreateInstance
peut être utilisée pour créer une instance d'un nouveau type basé sur les informations de type.
<code class="language-csharp">var list = Activator.CreateInstance(specificListType);</code>
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!