需要参数化类型';s方法应用于存储库的实现
本文关键字:存储 应用于 实现 方法 参数化类型 | 更新日期: 2023-09-27 18:00:55
我有一个Repository类:
public class Repository<T> where T : IMappable
{
public virtual List<IMappable> Get()
{
return new DataProvider().Get(/* somehow use T's Map() method */);
}
}
internal class DataProvider
{
public delegate IMappable Mapper(Object dataSource);
public List<IMappable> Get(Mapper mapper)
{
List<IMappable> mappables = new List<IMappable>();
//Paraphrasing
foreach(var ds in dataSource)
{
mappables.Add(mapper(ds));
}
return mappables;
}
}
public interface IMappable
{
IMappable Map(Object dataSource);
}
当我生成Repository<TypeThatImplementsIMappable>
时,我希望将其传递给使用泛型类型的Map方法。出于性能原因,我不能使用反射或代码DOM(我想这是允许我们具有的性能的截止点(。如何做到这一点?
您可以向T
:添加new
约束
public class Repository<T> where T : IMappable, new()
{
public virtual List<IMappable> Get()
{
T mapper = new T();
return new DataProvider().Get(mapper.Map);
}
}