だから、私は依存性注入についての特定のヒントとその使い方を探しています。DIコンストラクタ注入ニートネス
基本的に私はNinject(およびNinject MVCパッケージ)を使用するMVC Webサイトを持っています。ですから、MVCページを作成するときに、コントローラでコンストラクタインジェクションを使用します。これは大丈夫ですが、IMOは少し醜いですが、私が気に入らない主なことは、注入されたリポジトリをすべて他のクラスに渡さなければならないことです.6リポジトリ8リポジトリに渡す必要があるようです静的メソッドまたはオブジェクトコンストラクタ。
私のページの中には、ほとんどすべてのリポジトリで作業しなければならないことは言うまでもありません。そのため、コントローラのコンストラクターは膨大なものになります。
私のコードをあまりにも乱雑にしない他のオプションはありますか?私は本当に、単一の「設定」オブジェクトとしてそれらを渡すことはしません。問題を別のコード行に移動するだけです。
また、コンソール/デスクトップアプリケーションでも同じクラスライブラリを使用します。私はクラスライブラリでDependencyResolver.Currentを使用する考えが好きですが、誰もがこれがアンチパターンであり、コンストラクタインジェクションを使用すべきだと誰もが言います。
多分MyProjectDIContextクラスがあります。このクラスにはコントローラのコンストラクタで注入された型を移入し、必要に応じてすべてのメソッドにコンテキストを渡すことができますか?
私は答えのビットを探しました。私はよく合うものを見つけることができません。
他のクラスをninjectで登録してから、これらのクラスにレポジトリを直接注入することはできませんか? – BoeseB
私がDependencyResolverを使わないで覚えているのであれば、 "Turtles all the way down"という問題があるので、これを行うことはできません。 DIクラスがコントローラのコンストラクタに注入された場合、解決されたクラスを使用したいクラスに渡す必要があります。いくつかのケースでは、私はそれを正確に行っていますが、それはいくつかのより複雑なプロセスの議論の大規模なリストにつながります。 DependencyResolverはそれを回避しますが、リゾルバクラスに縛られているように見えます。 – Dwiea
私はまだコンソール/デスクトップアプリケーションでDIを把握しようとしています。そのため、DIがどのようにうまく機能しているか正確にはわかりません。例えば、私は "new MyClass()"に行き、それが適切な注入されたクラスを通過すると期待することはできませんか? – Dwiea