3 回答
TA贡献1799条经验 获得超6个赞
您不应为每种新数据类型的存储库创建新实例。对于许多不同的数据类型,它将消耗大量内存。您可以将静态类包装器与泛型方法一起使用
public static class ConnectedRepository
{
private static DbContext _context;
public static SetContext(DbContext context)
{
_context = context;
}
public static IEnumerable<TEntity> ToBindingList<TEntity>() : where TEntity : class
{
var dbSet = _context.Set<TEntity>();
dbSet.Load()
return dbSet.Local.ToBindingList();
}
}
TA贡献2065条经验 获得超13个赞
我不确定你想要什么是完全清楚的。如果我猜对了,您想在周围类的一个对象中的多个位置使用具有相同基础类型的泛型 ConnectedRepository 的相同实例,那么我会说您需要制作依赖于它的类,而不仅仅是类的单个方法。
public class ConnectedRepository<TEntity,T>
where TEntity : class
where T:class
{
ConnectedRepository<T> GenRep;
public ConnectedRepository(int c)
{
GenRep = new ConnectedRepository<T>(c); // now sure what c is, bt you could pass it to the constructor like this, if GenRep needs it
}
public void LoadData()
{
grdData.DataSource = GenRep.ToBindingList();
}
public void DoStuff()
{ // do something else with GenRep ?
}
}
TA贡献1856条经验 获得超17个赞
将其作为私有存储在类中,例如
private ConnectedRepository<T> _genRep;
进一步看,你是说你想要一个 T 类型的泛型函数,而类头中没有提到 T?那是不允许的。泛型类操作的所有类型都必须在其头文件中声明,并且替换发生在编译时。
- 3 回答
- 0 关注
- 107 浏览
添加回答
举报