2017-05-23 17 views
-1

DIで混乱します。私はDIがコンストラクタを使用して実装できると説明した多くの記事を見てきました。だから、私は鼻血の使用を理解することができません。 ninjectがそこになければ、コードも機能します。あなたは何がninjectを使用する利点を説明してください。DIを使ってDI

答えて

3

Ninjectは、私はちょうど 疎結合の基本的な原理に従うことによって行うことができないことを私のために提供し使用しない何Darin Dimitrov

を引用?

    Composition Root
  • のコードの
  • 少ないラインなどの古典的なWebフォームなどの特定の状況で、注射用
  • 多くのプラグイン、ASP.NET MVC、ASP.NETのWeb API
  • あなたのオブジェクトの寿命を処理するための標準コンテナ 自動的にIDisposableをは
  • オブジェクト処分する
  • 可能性...

あなたは翔すべてのものそれ以外の場合は手動で処理してください。これは、DIフレームワークはほとんど重要ではないと言われています。速く、アプリケーションに必要な特定の機能を提供する必要があります。しかし、DIフレームワークは、あなたのコードとアプリケーションのさまざまなレイヤーを疎結合の方法(インターフェイスと抽象クラスをプログラミングしてアプリケーションの異なるレイヤー間の結合を弱める)で設計する方法に絶対に影響を与えません。

したがって、DIフレームワークは、アプリケーションのComposition Rootにのみ介入するものであり、別のフレームワークで目を瞬きさせて置き換えたり、オブジェクトのライフタイムを手動で処理したりするフレームワークとして考えることができます。

たとえば、質問に表示されたコードは、レイヤを特定のDIフレームワークに結びつけるため、非常に悪いものです。この[Inject]の属性は癌のようです。これは、アプリケーションコードが特定のDIフレームワークに依存していることを意味します。

また、私はあなたがこれを読むことをお勧めしますbook

+1

[この本の第2版](https://www.manning.com/seemann2/)は現在製作中であり、第3章はすぐにリリースされる予定です。 – Steven