2008-11-28 7 views
7

Me gustaría crear una lista de tipos fuertes y decidir el tipo en tiempo de ejecución. Este es mi code.I pensó que debería funcionar, pero no :)Decidir sobre el tipo en el tiempo de ejecución y aplicarlo en tipo genérico: ¿cómo puedo hacer esto?

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

quieres que cualquier Ideat cómo crear una lista estricta de tipos cuyo tipo decidiré en tiempo de ejecución?

duplicado: aquí hay otras versiones:

+0

Lo sentimos, no pude encontrar a los otros. –

+1

Duplicado o no, busqué en varios "duplicados" pero la pregunta + el ejemplo aquí son muy claros, y también lo es la respuesta, por lo que es muy útil. – Veverke

Respuesta

20

Uso 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); 

Debe usar IList para mantener el resultado, porque no conoce el tipo real que se utilizará en el tiempo de ejecución.

Para los tipos genéricos con más de un parámetro de tipo, usaría algo como Dictionary<,>.

Ver también http://msdn.microsoft.com/en-us/library/system.type.makegenerictype.aspx

Cuestiones relacionadas