3 回答

TA貢獻(xiàn)1799條經(jīng)驗(yàn) 獲得超6個(gè)贊
您不應(yīng)為每種新數(shù)據(jù)類(lèi)型的存儲(chǔ)庫(kù)創(chuàng)建新實(shí)例。對(duì)于許多不同的數(shù)據(jù)類(lèi)型,它將消耗大量?jī)?nèi)存。您可以將靜態(tài)類(lèi)包裝器與泛型方法一起使用
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貢獻(xiàn)2065條經(jīng)驗(yàn) 獲得超14個(gè)贊
我不確定你想要什么是完全清楚的。如果我猜對(duì)了,您想在周?chē)?lèi)的一個(gè)對(duì)象中的多個(gè)位置使用具有相同基礎(chǔ)類(lèi)型的泛型 ConnectedRepository 的相同實(shí)例,那么我會(huì)說(shuō)您需要制作依賴(lài)于它的類(lèi),而不僅僅是類(lèi)的單個(gè)方法。
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貢獻(xiàn)1856條經(jīng)驗(yàn) 獲得超17個(gè)贊
將其作為私有存儲(chǔ)在類(lèi)中,例如
private ConnectedRepository<T> _genRep;
進(jìn)一步看,你是說(shuō)你想要一個(gè) T 類(lèi)型的泛型函數(shù),而類(lèi)頭中沒(méi)有提到 T?那是不允許的。泛型類(lèi)操作的所有類(lèi)型都必須在其頭文件中聲明,并且替換發(fā)生在編譯時(shí)。
- 3 回答
- 0 關(guān)注
- 133 瀏覽
添加回答
舉報(bào)