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條經驗 獲得超14個贊
我不確定你想要什么是完全清楚的。如果我猜對了,您想在周圍類的一個對象中的多個位置使用具有相同基礎類型的泛型 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 關注
- 143 瀏覽
添加回答
舉報