Chciałbym być w stanie realizować słownika z kluczem Type
i wartości Func<T>
gdzie T
jest przedmiotem tego samego typu co kluczowe:Czy jest możliwe zapisanie Func <T> w słowniku?
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");
Więc w zasadzie, by słownika być wypełniane typów, które odwołują się Func<T>
który wróci, że wartość:
int Bar = TypeDictionary[ typeof(int) ]();
string Baz = TypeDictionary[ typeof(string) ]();
Jak mogę iść o wdrażanie i egzekwowanie tego?
jest 'T' takie same dla wszystkich elementów w słowniku? – Dai
Nie ma sposobu na silne pisanie. W każdym razie nie miałoby to sensu. Jaki jest typ 'var thing = TypeDictionary [someType];'? Jeśli masz 'someType = typeof (int)', może to być dość oczywiste. Ale co się stanie, jeśli zostanie wzięty z 'obj.GetType()' z 'obj' rzutowanym na' object'? Możesz dodać metody, które ograniczają typ, ale * zawsze * będziesz musiał skończyć z 'Słownikiem()' i przesłać go podczas pobierania wartości. –
Rob
Nr T powinna być inna dla każdego wpisu w słowniku ... Pozwól mi zmienić moje pytanie, aby odzwierciedlić ... – Will