満足のいく答えを見つけることができなかった MVC アプリでの依存性注入に関する基本的な質問であることを願っています。私のアプリは、MVC 3 プロジェクト、サービス レイヤー クラス ライブラリ (SL)、およびデータ アクセス クラス ライブラリ (DAL) で構成されています。SL と DAL の両方に、それぞれのインターフェイスと実装が含まれています。MVC プロジェクトは、SL プロジェクトと DAL プロジェクトの両方を参照します。MVC プロジェクトは DAL の実装を作成し、それを DAL インターフェイスを受け入れる SL コンストラクターに挿入します。
私が懸念しているのは、SL が DAL インターフェイスをパラメーターとして受け入れるためには、DAL プロジェクトへの参照も必要である (インターフェイスがたまたま存在するだけでなく、実装もある) ことです。これは、現在 MVC とSL プロジェクトには、DAL アセンブリへの参照が必要です。
簡単に言えば、SL が実装プロジェクトではなくインターフェイス プロジェクトのみを参照する必要があるように、DAL インターフェイスを独自のプロジェクトに移動する方が理にかなっているでしょうか? MVC プロジェクトは明らかにインターフェイス プロジェクトと実装プロジェクトの両方を参照する必要があり、DAL はインターフェイス プロジェクトも参照する必要があります。これは、私のソリューションに別のプロジェクトを追加しても、物事を行うためのよりクリーンな方法のように思えますが、それほど気になりません。SL 内に DAL インターフェイスを格納し、DAL 参照 SL を持つという提案も見ましたが、それは私には正しくないようです。洞察や提案をいただければ幸いです。ありがとう!