2

TLDR: IoCコンテナを設定したら、それを使用する最も良い方法は何ですか?依存性注入/サービスロケータコンテナを使用するためのベストプラクティス?


私はIoC(Dependency Injection、Service Locatorsなど)を読んできました。私はDIが得意であり、IoCコンテナはオブジェクトのインスタンス化を容易にすることができますが、が見つからない場合は、を使用してください。ほとんどのチュートリアルでは、コンテナの設定を取得してあなたのところへ送りますが、何らかの理由で注入コンテナが設定されたら、そのコンテナを最も有効に活用する方法についてはクリックしていません。

  1. インスタンス化アップフロント考え得るすべての依存関係と依存関係の潜在的に膨大な数の単一のエントリポイントを経由してアプリケーションを介してこれらの流れを持っている:私はそこに私はコンテナを使用することができ、2つの方法がある伝えることができるものから、

    • 本当に必要のないクラスインスタンスがたくさん作成されている可能性があるため、これは馬鹿馬鹿しいようです。また、これを行うにはコンテナはほとんど必要ないと思われます。
  2. 注入コンテナをグローバルスコープに移動し、依存関係のある新しいオブジェクトが必要なときはいつでも呼び出すことができます。
    • これは愚かなためと思われる。)今はグローバル/シングルトン(嘔吐)とBを作成しました。)今、あなたの依存関係のインジェクターiteselfがは、依存関係です。

これらのオプションのどちらも、理想的ないないようですので、私はちょうど注入コンテナが実際に使用されることを意図している方法についての基本的な何かが欠けている場合、私は思ったんだけど。どんな助けもありがとう!

+4

[この本](https://www.manning.com/books/dependency-injection-in-dot-net)のコピーを入手するようアドバイスできます。 – Steven

答えて

-1

オブジェクトのライフタイムの概念を探しています。オートファックは、対象にgreat primerを持っています。

+1

これはどのように答えたのですか?生命は非常に重要ですが、特にDIを行うときは、OPの質問は生存時間に関するものではありません...そして確かに特定の容器についてではありません... –

+0

@ Ric.Net質問は生涯に容器を使用するときですアプリケーション、起動後および初期構成。これは具体的には私が言及していることです:「注入コンテナをいくつかのグローバルスコープに移動し、依存性を持つ新しいオブジェクトが必要なときはいつでも呼び出す」グローバルコンテナの呼び出しは、一般に、アプリケーションよりも寿命の短いオブジェクト、たとえば個々の要求のコントローラを取得するために行われます。したがって、生涯はその問題に取り組む概念であり、文脈での質問の理解には重要です。 –

+0

@ Ric.Netそして他の下落者私はOPとプライマリを読んだ後、あなたからの正当な反論を見たいと思っています。あなたがそれが底からそっと離れていると信じるなら、おそらく答えでしょう。(私は個人的には、コンテナの質問に多く答える力はありませんが、あなたはこれをダウンホートしたいと思うかもしれませんが[同じことに基づいて私の答えは "まあまあ私は思っているかコンテナについて話していますが、今日の実際のアップヴォートを集めた本能 "(http://stackoverflow.com/a/37830713/11635)) –