创建列表<;T>;使用Type对象而不是T
本文关键字:对象 Type gt 列表 lt 创建 使用 | 更新日期: 2023-09-27 18:29:08
我有一个名为LazyLoader<T> 。它连接到ORM,以便在需要时加载T类型的数据。它有效。
LazyLoader<T> 从ILazyLoader继承。
挑战:创建一个可以从Object类型加载Generic类型的工厂类。
如中所示,
public ILazyLoader CreateLazyLoader(int id, Type typeToLoad)
{
return new LazyListLoader<typeToLoad>(id);
}
问题:<typeToLoad>不接受Type对象。如何转换类型<将ToLoad>键入到类似<T> 其中T是类型ToLoad?
var llType = typeof(LazyListLoader<>).MakeGenericType(typeToLoad);
return (ILazyLoader)Activator.CreateInstance(llType, id);
尝试以下
var unboundType = typeof(LazyListLoader<>);
var boundType = unboundType.MakeGenericType(typeToLoad);
return (ILazyLoader)Activator.CreateInstance(boundType, new[] {id});