Я нахожу следующее немного запутанным ....
Dictionary<Type, Object> _typeMap; public void RegisterType<T>(Object o) { _typeMap.Add(typeof(T), o); }
Почему typeof(T) требуется в методе Add? Разве тип T уже не является параметром Type? Что еще это?
typeof(T)
Add
T
Type
T - это тип name , а typeof используется для получения соответствующего Type объекта.
typeof
Параметр универсального типа работает точно так же, как и любое другое имя типа, скажем, int. Вы тоже не можете сделать typeMap.Add(int, 0);.
int
typeMap.Add(int, 0);
Нет.Add здесь требуется экземпляр класса Type .
Параметры общего типа являются , а не экземплярами класса Type.
Это решение кажется мне немного «противником». Я верю , что результатом этого кода всегда будет попытка добавить запись с ключом "Тип" в словарь из-за того, что вы всегда получаете "typeof" из Тип . Вместо этого я думаю, что вы ищете ...
public void RegisterType<T>(Object o) { _typeMap.Add(T, o); }
Надеюсь, это поможет!
Вы можете поставить typeof (T), потому что T - это определение класса, а тип - это объект, описывающий Type, это для T и для Object и для String ... и т. Д. И т. Д.
typeof получает тип определения класса.