我想将Ninject用于IoC,用于ASP.NET MVC Web应用程序。我有以下代码示例:
// resides in a MyApplication.Web assembly
public class SomeController {
...
public ActionResult myControllerAction() {
Service service = <--- should this be instantiated by Ninject?
service.doSomeLogic();
...
}
}
// resides MyApplication.Common assembly
public class Service {
public void doSomeLogic() {
...
}
}
我担心的是,如果可能的话,我不希望两个程序集都依赖于Ninject。在我看来,我希望允许.Web项目依赖于Ninject,而不是.Common程序集。
这里使用的策略是什么?
答案 0 :(得分:3)
正在创建的服务不需要依赖Ninject。只有Web项目需要这个。您可能应该在控制器上使用构造函数注入(如果它也具有依赖项,则使用Service)。您可以在global.asax中的Web项目中连接它们,或者更可能是从那里调用的配置类。使用Ninject NuGet package for MVC,按照examples进行配置。
public class SomeController {
private readonly Service _service;
public SomeController(Service service)
{
_service = service;
}
public ActionResult myControllerAction() {
_service.doSomeLogic();
...
}
}