私は2つの関連する(この質問に)プロジェクトと他のいくつかのプロジェクトで解決策を持っています。
- 他のいくつかのプロジェクトで使用される機能を備えたクラスライブラリ。
- ASP.NETMVCアプリケーション。
私の質問は基本的に、Ninject2でIoCをどこで行うべきかということです...
- クラスライブラリには、特にWebリクエスト固有のセッションオブジェクトを必要とするリポジトリクラス内のDIの愛が必要です(作業ユニットを考えてください)。
- Ninject 2では基本的にNinjectHttpApplicationから継承するため、MVCアプリにはDIが必要です。
- クラスライブラリの単体テストでは、別のリポジトリセットを挿入するために、これを認識する必要があります。
- 同じ理由で、Webアプリの単体テストを挿入する必要があります。
そもそも3つの選択肢しか見られなかったので、私はここで自分自身を精神的なコーナーに塗りつぶしました。クラスライブラリのDI、WebアプリのDI、またはその両方ですが、それぞれに問題があります。
- そもそもMVCアプリはNinjectHttpApplicationから継承する必要があるため、クラスライブラリでのみDIを実行することはできません。
- 私はMVCアプリでのみDIを実行することはできません-結局のところ、クラスライブラリは他のライブラリによって使用されており、MVCアプリはとにかくライブラリの内部についてあまり知らないはずです。
- これが私が見ることができる唯一の方法だと思います:両方のプロジェクトの独立したIoC。クラスライブラリとMVCアプリには、それぞれ独自のIoCセットアップがあり、お互いを気にすることなく、自分たちのもののDIを実行します。
誰かがこのようなことをする方法に関するいくつかの「ベストプラクティス」またはガイドラインを持っていますか?私がこのような状況に陥った最初の人だとは想像できません。これを行うための「適切な」方法が何であるかを知っておくとよいでしょう...
ありがとう!