Tôi muốn để có thể thực hiện một cuốn từ điển với khóa Type
và giá trị của Func<T>
nơi T
là một đối tượng cùng loại như là chìa khóa:Có thể lưu trữ Func <T> trong từ điển không?
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");
Vì vậy, về cơ bản, từ điển sẽ được phổ biến với các loại có thể tham chiếu đến một Func<T>
sẽ trả về giá trị đó:
int Bar = TypeDictionary[ typeof(int) ]();
string Baz = TypeDictionary[ typeof(string) ]();
Làm cách nào để triển khai và thực thi điều này?
là 'T' giống nhau cho tất cả các yếu tố trong từ điển? – Dai
Không có cách nào để gõ mạnh. Nó sẽ không có ý nghĩa, anyway. Loại 'var thing = TypeDictionary [someType];' là gì? Nếu bạn có 'someType = typeof (int)', nó có thể khá rõ ràng. Nhưng điều gì xảy ra nếu nó được lấy từ 'obj.GetType()' với 'obj' được gọi là' đối tượng'? Bạn có thể thêm các phương thức hạn chế kiểu, nhưng bạn sẽ * luôn luôn * phải kết thúc bằng 'Dictionary()' và cast nó khi lấy giá trị. –
Rob
Không. T nên khác nhau cho mỗi mục nhập trong từ điển ... hãy để tôi thay đổi câu hỏi của tôi để phản ánh ... – Will