1

私は「.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 プロジェクトへの 参照を実際に必要としていると理解しています。

私の質問:

  1. 私の理解では、すべてをビルドするには、DataAccess.dll を Web プロジェクトの Bin フォルダーにコピーする必要があります。これは非常に手間がかかるように思えるので、Visual Studio でこれを行うように設定することに興味がありますか? これが、これまでに見つけたすべてです。

  2. DI コンテナは、私が説明したことをどのように解決しますか? ** まだコンテナを調べていないので、依存プロジェクトへのハード リファレンスが必要かどうかはわかりません。

4

1 に答える 1

0

私の理解では、すべてをビルドするには、DataAccess.dll を Web プロジェクトの Bin フォルダーにコピーする必要があります。

あなたは別のものを持っているのでDataAccess.dll、はい。

これを行うようにVisual Studioを設定することに興味があります

これを行うには、ビルド前のイベントを使用できます (プロジェクトのプロパティ ページの [ビルド] タブで)。

同じプロジェクト内で DI を行っている場合は、その必要がない可能性があることを考慮してください。クラスを個別に展開する必要がある場合、プロジェクトは展開単位にする必要があります。論理的な分離に名前空間/ディレクトリを使用すると、この問題は発生しません。

DI コンテナは、私が説明したことをどのように解決しますか?

あなたはそれを教えてください。構成時に明示的に、または規則を使用します。

于 2013-01-27T19:36:45.967 に答える