サービス クラスに Ninject を使用したい Windows サービス アプリケーションがあります。他のサービス クラス、たとえば「低レベル」のサービス クラス、またはより一般的なサービス クラスを使用するサービス クラスがいくつかあります。通常、各サービスにはデータ アクセス用のリポジトリが必要です。
たとえば、IRepository インターフェイス、IServices1 および IServices2 インターフェイスがあります。後者の 2 つの実装には Services1 と Services2 があり、どちらもタイプ IRepository のコンストラクター パラメーターを持ちます。ここで、Services1 の実装で IServices2 インターフェイスのいくつかのメソッドを使用する必要があると仮定します。そのため、IServices2 型の別のコンストラクター パラメーターを Services1 に追加します。Services1 クラスを手動でインスタンス化すると、次のようになります。
var repo = new MyRepository(); // implementing IRepository
var service1 = new Services1(repo, new Services2(repo));
このようにして、両方のサービスが同じリポジトリで動作することを確認できます (これは私にとって基本的な要件です)。
このシナリオで Ninject を使用して、適切な IRepository インジェクションで IServices1 インスタンスを準備するにはどうすればよいですか? または、このアプローチに大きな設計ミスがありますか?
私は MVC プラットフォームを使用していないため、ここにはリクエスト スコープがありません。MVC の場合は、これでタスクを実行できると思います。