私の知る限り、依存性注入はサービスの場所と同じではありません。ただし、Unityアプリケーションブロックには、Common Service Locatorライブラリ(サービスロケーターだと思います)が含まれています。そのライブラリをどのように使用する必要があり、いつ使用する必要がありますか?また、依存性注入のためにUnity自体によって使用されていますか?注: CommonServiceLocatorCodePlexホームページからその使用法を
引用しないでください。
2 に答える
Common Service Locatorインターフェースは、ライブラリを使用するアプリでライブラリのコンテナの選択を強制せずにDIコンテナを使用したいライブラリ作成者を対象としています。オブジェクトを解決する必要があるライブラリ内では、代わりにCSLインターフェイスに対してコーディングすることを目的としています。次に、呼び出しているアプリが使用しているコンテナを使用できます。
再利用可能なライブラリコンポーネントを作成していない場合は、CSLを使用しないでください。それはあなたに何も買わない追加のレイヤーです。
いいえ、依存性注入はサービスロケーションと同じものではありませんが、多くの機能的な類似点を共有しています。彼らが共有していないのは、より哲学的なアプローチです。
どちらも、アプリケーションで構成されているオブジェクトへのアクセスを提供します。ただし、依存性注入では、オブジェクト(またはインターフェイス)を明示的に要求してはならないということです。代わりに、オブジェクトまたはインターフェースを指定する必要があります。そうすれば、フレームワークがすべてをフックするように処理します。
Service Locationは、ServiceLocatorシステムから直接オブジェクトを要求する場所です。
別の言い方をすれば、Service Locationでは、必要なオブジェクトを見つける必要があります。依存性注入は、必要なオブジェクトがすでに配置された状態で作成されていることを前提としています。