0

私は非常に階層化されたMVC3アプリケーションを持っています(ドメイン、サービス、Web、インフラストラクチャなどの個別のプロジェクト)

MVC3とNinjectがとても親切に連携するコントローラーコンストラクターインジェクションの概念を理解しています。しかし、Webレイヤーとは別のレイヤーの注入についてはどうでしょうか。

たとえば、リポジトリインターフェイスに依存するサービスがあります。サービスはコントローラーから呼び出され、サービス自体はコンストラクターインジェクションによって適切にインジェクトされますが、リポジトリについてはどうでしょうか。どうすればそれを注入できますか?

public class MyService
{
  protected virtual IPersonRepository PersonRepository {get; set;}

  public virtual void UseRepository()
  {
    PersonRepository.FindEveryoneInTheWorldButDontReturnThem();
  }
}

上記の例のリポジトリをどこに/どのように[n]注入しますか?

Ninject 3.0 Ninject.Web.MVC 3.0

4

1 に答える 1

3

コンストラクター インジェクションを介してリポジトリをインジェクトすると、IoC コンテナー (Ninject) が依存関係チェーンを処理します (つまり、MyService を依存関係としてインジェクトすると、その依存関係もコンテナーによって解決され、その依存関係なども解決されます)。

public MyService(IPersonRepository personRepository)
{
    this.PersonRepository = personRepository;
}
于 2012-09-04T17:55:10.337 に答える