Ninject太侵入了?

时间:2012-12-24 19:32:13

标签: asp.net ninject

我想将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程序集。

这里使用的策略是什么?

1 个答案:

答案 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();
    ... 
  }
}