0

ASP.NETMVCWebアプリケーションにNinjectforIoCを使用したいと思います。次のコードサンプルがあります。

// 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プロジェクトのみがこれを必要とします。おそらく、コントローラー(および依存関係がある場合はService)でコンストラクターインジェクションを使用する必要があります。これらは、global.asaxのWebプロジェクト、またはおそらくそこから呼び出される構成クラスに接続できます。MVC用のNinjectNuGetパッケージを使用し、サービスを構成するためのに従います。

public class SomeController { 

  private readonly Service _service;

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

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