我想创建一个基于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