0

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

在这里使用什么策略?

4

1 回答 1

3

正在创建的服务不需要依赖于 Ninject。只有网络项目需要这个。您可能应该在控制器(和服务,如果它也有依赖项)上使用构造函数注入。您可以将它们连接到您的 web 项目的 global.asax 中,或者更可能是从那里调用的配置类。使用MVC 的 Ninject NuGet 包,按照示例配置您的服务。

public class SomeController { 

  private readonly Service _service;

  public SomeController(Service service)
  {
      _service = service;
  }

  public ActionResult myControllerAction() {
    _service.doSomeLogic();
    ... 
  }
}
于 2012-12-24T19:42:46.360 回答