我正在使用ninject注入我的存储库。我希望我的基类可以继承,但我不能因为它有一个构造函数。
基础控制器:
namespace Orcha.Web.Controllers
{
public class BaseController : Controller
{
public IRepository<string> db;
public BaseController(Repository<string> db){
this.db = db;
Debug.WriteLine("Repository True");
}
}
}
继承控制器: 错误'BaseController'不包含带0参数的构造函数HomeController.cs
public class HomeController : BaseController
{
public ActionResult Index()
{
ViewBag.Message = "Welcome to ASP.NET MVC!";
return View();
}
public ActionResult About()
{
return View();
}
}
答案 0 :(得分:5)
C#要求如果您的基类没有默认构造函数,则必须将构造函数添加到派生类中。例如。
public class HomeController : BaseController
{
public HomeController(IRepository<string> db) : base(db) { }
public ActionResult Index()
{
ViewBag.Message = "Welcome to ASP.NET MVC!";
return View();
}
public ActionResult About()
{
return View();
}
}
如果您具有所需的绑定,则由Ninject提供依赖关系:
Bind<IRepository<string>>().To<Repository<string>();
您的BaseController不应该使用具体的存储库,而应该使用接口。
public class BaseController : Controller
{
public IRepository<string> db;
public BaseController(IRepository<string> db){
this.db = db;
Debug.WriteLine("Repository True");
}
}