我有一个名为LazyLoader< T>的对象。它连接到ORM以在需要时加载T类型的数据。它有效。
LazyLoader< T>继承自ILazyLoader。
挑战:创建一个可以从Object类型加载Generic类型的工厂类。
如同,
public ILazyLoader CreateLazyLoader(int id, Type typeToLoad)
{
return new LazyListLoader<typeToLoad>(id);
}
问题:&lt; typeToLoad&gt;不接受Type对象。如何转换Type&lt; typeToLoad&gt;进入像&lt; T&gt;这样的东西其中T是typeToLoad?
答案 0 :(得分:9)
var llType = typeof(LazyListLoader<>).MakeGenericType(typeToLoad);
return (ILazyLoader)Activator.CreateInstance(llType, id);
答案 1 :(得分:4)
尝试以下
var unboundType = typeof(LazyListLoader<>);
var boundType = unboundType.MakeGenericType(typeToLoad);
return (ILazyLoader)Activator.CreateInstance(boundType, new[] {id});