Var*_*yan 1 ninject ninject.web.mvc asp.net-mvc-3
我正在使用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");
}
}
}
Run Code Online (Sandbox Code Playgroud)
具有继承的控制器: 错误'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();
}
}
Run Code Online (Sandbox Code Playgroud)
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();
}
}
Run Code Online (Sandbox Code Playgroud)
如果您具有所需的绑定,则由Ninject提供依赖关系:
Bind<IRepository<string>>().To<Repository<string>();
Run Code Online (Sandbox Code Playgroud)
您的BaseController不应该使用具体的存储库,而是接口.
public class BaseController : Controller
{
public IRepository<string> db;
public BaseController(IRepository<string> db){
this.db = db;
Debug.WriteLine("Repository True");
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3284 次 |
| 最近记录: |