È possibile ottenere il seguente codice? So che non funziona, ma mi chiedo se c'è una soluzione alternativa?Creazione di un'istanza di tipo <T> generica con una variabile contenente il Tipo
Type k = typeof(double);
List<k> lst = new List<k>();
È possibile ottenere il seguente codice? So che non funziona, ma mi chiedo se c'è una soluzione alternativa?Creazione di un'istanza di tipo <T> generica con una variabile contenente il Tipo
Type k = typeof(double);
List<k> lst = new List<k>();
Sì, c'è:
var genericListType = typeof(List<>);
var specificListType = genericListType.MakeGenericType(typeof(double));
var list = Activator.CreateInstance(specificListType);
Penso che questo sia quello che voglio. Fammi ricontrollare e segnerò il tuo come risposta momentanea. – Chris
Penso che il problema principale qui sia che non descrivi quello che vuoi * noi *. Ci fai vedere un tentativo fallito di * qualcosa * e poi ti chiede come ottenere ciò che * vuoi *. Se vuoi delle risposte e non delle ipotesi, dovresti descrivere cosa devi fare, invece di come hai tentato di farlo. –
Questo dovrebbe funzionare, grazie. – Chris
un modo più pulito potrebbe essere quella di utilizzare un metodo generico. Fare qualcosa di simile:
static void AddType<T>()
where T : DataObject
{
Indexes.Add(typeof(T), new Dictionary<int, T>());
}
Prova questa:
var genericListType = typeof(List<>);
var specificListType = genericListType.MakeGenericType(typeof(double));
var list = Activator.CreateInstance(specificListType);
Grazie per aver preso il tempo di dare una risposta. È grazie a colleghi utili come te che siamo in grado di imparare insieme come comunità. Ecco alcuni suggerimenti su come migliorare la tua risposta: [Come scrivere una buona risposta] (https://stackoverflow.com/help/how-to-answer) – Brien
po 'confuso dal commento "questo può essere realizzato in C# 4.0." Non può, almeno non nel modo in cui lo mostri. C# 4 richiede ancora parametri di tipo generico da specificare al momento della compilazione; non è ancora possibile passare una variabile di tipo come parametro di tipo generico. – itowlson
Si prega di esprimere le cose come una domanda quando si tratta di una domanda. Il codice specificato non può essere realizzato con C# 4.0. –
Domanda simile: http://stackoverflow.com/questions/687363/how-do-i-create-a-generic-class-from-a-string-in-c –