2008-11-28 7 views
7

Je voudrais créer une liste de type fortement et décider du type dans l'exécution. Ceci est mon code.I pensé qu'il devrait fonctionner, mais il n'a pas :)Décider de taper dans le runtime et l'appliquer en type générique - comment puis-je faire cela?

 Type elementType = Type.GetType(parts[0].Trim(),false,true); 
     var elementsBeingSet = new List<elementType>(); 

auriez-vous une Ideat comment créer une liste fortement typé dont le type je déciderai dans l'exécution?

double: voici les autres versions:

+0

Désolé, je ne pouvais pas trouver les autres. –

+1

Dupliquer ou pas, j'ai cherché dans plusieurs "doublons" mais la question + exemple ici est très claire, et la réponse est très claire, ce qui le rend très utile. – Veverke

Répondre

20

Utilisation Type.MakeGenericType(type[]):

Type elementType = GetElementType(); // get this type at runtime 
Type listType = typeof(List<>); 
Type combinedType = listType.MakeGenericType(elementType); 
IList elements = (IList) Activator.CreateInstance(combinedType); 

Vous devez utiliser IList pour conserver le résultat, car vous ne connaissez pas le type réel qui sera utilisé lors de l'exécution.

Pour les types génériques avec plus d'un paramètre de type, vous devez utiliser quelque chose comme Dictionary<,>.

Voir aussi http://msdn.microsoft.com/en-us/library/system.type.makegenerictype.aspx

Questions connexes