Ninject DI - 在MVC3应用程序中放置绑定

时间:2012-09-04 17:53:25

标签: asp.net-mvc dependency-injection inversion-of-control ninject

我有一个非常分层的MVC3应用程序(域,服务,Web,基础架构等的单独项目)。

我理解控制器构造函数注入的概念,MVC3和Ninject很好地协同工作。但是对于与网络层分开的层的注入呢?

例如,我有一个依赖于Repository接口的服务。该服务是从控制器调用的,服务本身将通过构造函数注入正确注入,但是存储库呢?我该如何注射?

public class MyService
{
  protected virtual IPersonRepository PersonRepository {get; set;}

  public virtual void UseRepository()
  {
    PersonRepository.FindEveryoneInTheWorldButDontReturnThem();
  }
}

我在哪里/如何[n]注入上述示例中的存储库?

Ninject 3.0 Ninject.Web.MVC 3.0

1 个答案:

答案 0 :(得分:3)

通过构造函数注入注入存储库,你的IoC容器(Ninject)将负责依赖链(即当你将MyService注入依赖关系时,它的任何依赖关系也将由容器及其依赖关系等解决。上)

public MyService(IPersonRepository personRepository)
{
    this.PersonRepository = personRepository;
}