Créer une instance de type générique en utilisant une variable du type contenant
En C#, il peut sembler contre-intuitif que vous ne puissiez pas instancier un type générique directement à l'aide d'une variable du type conteneur. Le code suivant illustre le problème :
<code class="language-c#">Type k = typeof(double); List<k> lst = new List<k>(); // 编译错误</code>
Ce code ne se compile pas car il tente d'utiliser la variable k pour spécifier un type générique. Cependant, il existe une solution de contournement qui peut être utilisée pour obtenir la fonctionnalité souhaitée.
Pour créer une instance de type générique à l'aide d'une variable du type conteneur, vous pouvez exploiter la réflexion et Activator.CreateInstance() :
<code class="language-c#">var genericListType = typeof(List<>); var specificListType = genericListType.MakeGenericType(typeof(double)); var list = Activator.CreateInstance(specificListType);</code>
Ce code fonctionne comme ceci :
genericListType
Obtient la définition générique du type List<>
. MakeGenericType()
obtient la définition de type générique et spécifie les paramètres de type réels (double
dans ce cas). Activator.CreateInstance()
Instancie un type générique spécifique en utilisant les paramètres de type spécifiés. 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!