Mi piacerebbe essere in grado di attuare un dizionario con una chiave di Type
e un valore di Func<T>
dove T
è un oggetto dello stesso tipo come la chiave:È possibile memorizzare un Func <T> all'interno di un dizionario?
Dictionary<Type, Func<T>> TypeDictionary = new Dictionary<Type, Func<T>>() /*Func<T> returns an object of the same type as the Key*/
TypeDictionary.Add(typeof(int), () => 5);
TypeDictionary.Add(typeof(string), () => "Foo");
Quindi, in sostanza, il dizionario sarebbe essere popolato con i tipi che fanno riferimento a un Func<T>
che tornare quel valore:
int Bar = TypeDictionary[ typeof(int) ]();
string Baz = TypeDictionary[ typeof(string) ]();
Come posso fare per applicare e far rispettare questo?
è 'T' lo stesso per tutti gli elementi all'interno del dizionario? – Dai
Non c'è modo di avere una digitazione forte. Comunque non avrebbe senso. Qual è il tipo di 'var thing = TypeDictionary [someType];'? Se hai 'someType = typeof (int)', potrebbe essere abbastanza ovvio. Ma cosa succede se è preso da 'obj.GetType()' con 'obj' cast come' object'? Puoi aggiungere metodi che limitano il tipo, ma dovrai * sempre * finire con 'Dizionario()' e lanciarlo quando si recupera il valore. –
Rob
No. T dovrebbe essere diverso per ogni voce nel dizionario ... fammi cambiare la mia domanda per riflettere ... – Will