我想創建一個基於this post的通用LINQ-TO-SQL存儲庫,它基本上可以讓你定義一個通用的基礎知識庫類,然後你可以定義所有的實際知識庫類來自通用基礎。從泛型類泛型類中缺少構造函數
我想使用一個倉庫有或沒有通過數據上下文的選項,所以我決定在通用基類來創建兩個構造函數:
public abstract class GenericRepository<T, C>
where T : class
where C : System.Data.Linq.DataContext, new()
{
public C _db;
public GenericRepository()
{
_db = new C();
}
public GenericRepository(C db)
{
_db = db;
}
public IQueryable<T> FindAll()
... and other repository functions
}
要使用它,我會derrive我的實際倉儲類:
public class TeamRepository : GenericRepository<Team, AppDataContext> { }
現在,如果我嘗試用參數使用:
AppDataContext db = new AppDataContext();
TeamRepository repos=new TeamRepository(db);
我得到的錯誤: 「App.Models.TeamRepository」不包含一個構造函數1個參數
因此,它看起來就像你不能繼承C#構造函數,那麼,你將如何讓我這個代碼可以調用:TeamRepository()或TeamRepository(db)
M:「派生類不會自動繼承基類」。應該是「派生類不會自動繼承基類的構造函數」。 – 2010-08-02 20:40:51