我开始使用依赖注入,并且在向基类注入依赖项时遇到了一些麻烦。
我有一个BaseController
控制器,我的其他控制器继承了这个控制器。在这个基本控制器内部,我做了一些检查,例如确定用户是否具有查看当前页面的正确权限,检查是否存在某些会话变量等。
我在这个基本控制器里面有一个依赖,我想用Ninject注入,但是当我设置它时,就像我对其他依赖项一样,编译器告诉我:
错误1'MyProject.Controllers.BaseController' 不包含构造函数 取0参数
这很有道理,但我不确定如何注入这种依赖。我是否应该使用这种使用基本控制器的模式,还是应该以更有效/更正确的方式进行此操作?
答案 0 :(得分:11)
你的BaseController构造函数应该是这样的
BacseConctoller(Info info)
{
this.info = info
}
然后是所有继承类 他们的构造函数
ChildController(Info info):base(info)
{
}
在这种情况下,您可以将Info对象注入基本控制器类
答案 1 :(得分:1)
马克是对的,
BaseClass(dependantObject object)
{
Object = object;
}
所以为了实现dependantObject所以所有子类都可以访问基本行为,我们可以在子类上使用注入并简单地链接基础构造函数,传入我们的'Ninjected'对象。
SubClass() : this(null) {}
SubClass(dependantObject object) : base(object)
{
}
快乐的编码!