我有一个非常分层的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
答案 0 :(得分:3)
通过构造函数注入注入存储库,你的IoC容器(Ninject)将负责依赖链(即当你将MyService注入依赖关系时,它的任何依赖关系也将由容器及其依赖关系等解决。上)
public MyService(IPersonRepository personRepository)
{
this.PersonRepository = personRepository;
}