继承自MVC控制器类
public class BaseController : Controller
{
private ITenantRepository _repository;
[Inject]
public BaseController(ITenantRepository repository)
{
_repository = repository;
}
protected override void Initialize(System.Web.Routing.RequestContext requestContext)
{
base.Initialize(requestContext);
}
}
无法建立
BaseController'不包含带0参数的构造函数
显然我错过了一些明显的东西。答案 0 :(得分:2)
在您的子控制器中,确保您已使用与基类相同的参数定义了构造函数:
public class FooController: BaseController
{
public FooController(ITenantRepository repository): base(repository)
{
}
...
}
您需要这样做,因为在基类中,您已删除无参数构造函数并将其替换为自定义构造函数。因此,必须从其无参数构造函数中删除派生类。
另请注意,将Ninject与ASP.NET MVC一起使用的正常方法是将其设置为应用程序顶层的DependencyResolver
。控制器不应使用任何特定于容器的属性,例如您使用的[Inject]
属性,因为这些属性将您的代码绑定到您正在使用的依赖注入容器。
另请注意,除了前面提到的不良做法之外,代码中构造函数的[Inject]
属性没有实质性影响: