将依赖项注入基类

时间:2010-05-28 12:39:02

标签: asp.net-mvc-2 dependency-injection ninject ninject-2

我开始使用依赖注入,并且在向基类注入依赖项时遇到了一些麻烦。

我有一个BaseController控制器,我的其他控制器继承了这个控制器。在这个基本控制器内部,我做了一些检查,例如确定用户是否具有查看当前页面的正确权限,检查是否存在某些会话变量等。

我在这个基本控制器里面有一个依赖,我想用Ninject注入,但是当我设置它时,就像我对其他依赖项一样,编译器告诉我:

  

错误1'MyProject.Controllers.BaseController'   不包含构造函数   取0参数

这很有道理,但我不确定如何注入这种依赖。我是否应该使用这种使用基本控制器的模式,还是应该以更有效/更正确的方式进行此操作?

2 个答案:

答案 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)
  {

  }

快乐的编码!