Decidere sul tipo nel runtime e applicarlo in un tipo generico – come posso fare questo?

Mi piacerebbe creare un elenco di tipo forte e decidere il tipo in runtime. Questo è il mio codice. Ho pensato che dovrebbe funzionare, ma non 🙂

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

avresti qualche idea su come creare una lista fortemente tipizzata di cui deciderò il tipo in runtime?

Duplicato: qui ci sono altre versioni:

  • È imansible utilizzare Generics in modo dinamico?
  • Dichiarare un’istanza di tipo generico in modo dinamico
  • Chiamare un metodo generico con un argomento di tipo noto solo al momento dell’esecuzione

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

Devi usare IList per mantenere il risultato – perché non conosci il tipo effettivo che verrà utilizzato in fase di esecuzione.

Per i tipi generici con più di un parametro di tipo useresti qualcosa come Dictionary< ,> .

Vedi anche http://msdn.microsoft.com/en-us/library/system.type.makegenerictype.aspx