У меня есть объект LazyLoader < T>. Он подключается к ORM для загрузки данных для типа T, когда это необходимо. Оно работает.Создать список <T> используя объект типа вместо T
LazyLoader < T> наследуется от ILazyLoader.
Задача: создать заводский класс, который может загружать общий тип из типа объекта.
Как и в,
public ILazyLoader CreateLazyLoader(int id, Type typeToLoad)
{
return new LazyListLoader<typeToLoad>(id);
}
Проблема: < typeToLoad> не принимает объект Type. Как преобразовать Type < typeToLoad> во что-то, что будет работать как < T> где T является typeToLoad?
Это должен быть общий тип аргумента, а не параметр. 'public ILazyLoader CreateLazyLoader (int id) {return new LazyListLoader (id); } ' –
asawyer
Если вы не знаете тип во время компиляции, это довольно большой флаг, с которого вы не должны использовать ORM. Подавляющее большинство функций, которые они предлагают, либо требуют, чтобы вы знали типы, с которыми имеете дело во время компиляции, либо не можете предоставить вам какие-либо преимущества, чтобы не использовать ORM, если вы не знаете эту информацию. – Servy
@asawyer: Я не думаю, что вы действительно можете сказать это так окончательно без какого-либо контекста. Хотя дженерики, безусловно, лучше подходят для типов, известных во время компиляции, это далеко не редкостное требование, и в некоторых случаях это оправдано. –