私は「.Net での依存性注入」を読んでおり、提示されたアイデアのいくつかを実装したいと考えています。率直に言うと、DI コンテナーに飛び込む前に概念をよりよく理解するために、'Poor Mans DI'/No DI Container (依存関係を手動で管理する) を試してみたいと思います。
第 2 章に、コンポジション ルートと依存関係の作成 (およびコンストラクター注入) を示す例があります。基本的な考え方は次のようなものでした。
Web Project (has CompositionRoot.cs) --> Domain Project <-- DataAccess Project
コンポジション ルートは DataAccess インスタンスを作成し、ドメイン プロジェクトのクラスのコンストラクターに渡します。すべての依存関係は web.config から読み取られます。
私は上記の考えに完全に同意し、Web プロジェクトが DataAccess プロジェクトを参照してはならないことに同意します。この時点で、Reflection を介してインスタンスを作成するには、Web プロジェクトが DataAccess プロジェクトへの 参照を実際に必要としていると理解しています。
私の質問:
私の理解では、すべてをビルドするには、DataAccess.dll を Web プロジェクトの Bin フォルダーにコピーする必要があります。これは非常に手間がかかるように思えるので、Visual Studio でこれを行うように設定することに興味がありますか? これが、これまでに見つけたすべてです。
DI コンテナは、私が説明したことをどのように解決しますか? ** まだコンテナを調べていないので、依存プロジェクトへのハード リファレンスが必要かどうかはわかりません。