2

我从依赖注入开始,在将依赖注入基类时遇到了一些麻烦。

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

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

错误 1 ​​'MyProject.Controllers.BaseController' 不包含采用 0 参数的构造函数

这是有道理的,但我只是不确定如何注入这种依赖关系。我应该完全使用这种使用基本控制器的模式,还是应该以更有效/正确的方式这样做?

4

2 回答 2

11

你的 BaseController 构造函数应该是这样的

BacseConctoller(Info info)
{
    this.info = info
}

然后对于所有继承类它们的构造函数

ChildController(Info info):base(info)
{
}

在这种情况下,您可以将 Info 对象注入基本控制器类

于 2010-05-28T12:59:32.690 回答
1

马克是对的,

BaseClass(dependantObject object)
{
 Object = object;
}

因此,为了实现dependantObject,所有子类都可以访问基本行为,我们可以在子类上使用注入并简单地链接基本构造函数,传入我们的“Ninjected”对象。

 SubClass() : this(null) {}

 SubClass(dependantObject object) : base(object)
  {

  }

快乐编码!

于 2010-05-30T20:09:13.390 回答