次のプロジェクトを持つソリューションがあります。
- コア (ビジネス オブジェクト/ドメインに関連しない、処理用のクラスを含む)
- ドメイン (ビジネス オブジェクトを含む)
- ハーネス(コンソールアプリ)
- MVC4 アプリ
- 永続性 (リポジトリ インターフェイス、EF マッピングなどの実装を含む)
- リポジトリ (リポジトリ インターフェイスを含む)
- テスト (単体テストを含む)
NInject を使用した経験があるため、IoC コンテナーとして使用したいと考えていますが、自分のニーズにより適したものを提案することは自由です。
ドメイン オブジェクトは、データ アクセスを行うために、リポジトリについて知る必要があります (つまり、Person クラスはすべての AddressDetails を取得する必要がある場合があります)。単体テストでのモックに役立つように、すべてがインターフェースにコーディングされています。
ドメイン プロジェクトが IoC コンテナーに依存することは望ましくありませんが、ドメイン プロジェクトですべてのインスタンスを作成し、適切なリポジトリを挿入する方法が必要です。これどうやってするの?また、必要に応じてハーネスとテスト プロジェクトからインジェクションを実行できるようにしたいと考えています。これを行う唯一の方法は、NInject から StandardKernel をラップする Domain クラスに静的オブジェクトを配置し、それを呼び出して依存関係を設定することです。その方法を使用するとは思わないコンストラクターインジェクションを機能させることができれば、それもいいでしょう。私が考えることができるもう1つの選択肢は、正しい依存関係を持つドメインオブジェクトを構築するファクトリを持つことですが、毎回ファクトリを呼び出さなければならないのではなく、 IPerson person = new Person() を持つことができます。
前もって感謝します。