私はUnityを初めて使用しますが、この質問はIoCにとってより一般的であり、IoC全体を実装するのはかなり新しいものです。このプロジェクト構造(わずかに簡略化)を使用したVS2010ソリューションがあります。
- ビジネスオブジェクト–フォルダ
- DomainModel(Class Lib prj。)– Entity Framework2POCOエンティティ
- データレイヤー–フォルダー
- DataAccess(Class Lib prj。)– EF2 EDMX
- リポジトリ(Class Lib prj。)–IRepositoryインターフェイスとリポジトリの具体的な実装
- プレゼンテーション層–フォルダ
- WebUI –MVCプロジェクト
- サービスレイヤー
- サービス(Class Lib prj。)– IServiceインターフェイスとサービス(ファサードパターン)の具体的な実装
すべてのプロジェクトはDomainModelプロジェクトを参照します。
リポジトリはDataAccessプロジェクトを参照します。
サービスレイヤーはリポジトリプロジェクトを参照します。
WebUIはサービスプロジェクトとUnityアセンブリを参照します。
すべてのサービスタイプをWebUI(カスタムUnityControllerFactory.csを介したglobal.asax)に正しく挿入するようにUnityを構成しました。しかし、リポジトリオブジェクトを注入するようにサービスレイヤーでUnityを設定するにはどうすればよいですか?
開発中に誰もショートカットを使用せず、サービスレイヤーをバイパスしないようにするために、WebUIからリポジトリプロジェクトを参照したくありません。
私が持っているカップルのアイデア(それがそれを解決するかどうかはわかりません):
- IRepositoryインターフェイスをDomainModelに移動し、IRepositoryのUnity.RegisterType<>呼び出しを追加します
- Web.configでUnity構成をセットアップする
特にサービスレイヤー/リポジトリ用にUnityを構成する方法だけでなく、一般的にプロジェクトについても、どのような方向でも大歓迎です。