静的プロパティを必要とするメソッドがあり、単体テストを作成したいので、それをラッパー クラスでラップするとします。インターフェイスを IFoo & 具体的なクラス Foo と呼びましょう。
私のメソッドが MVC ビュー内から呼び出された場合、そのメソッドにラッパー インスタンスをどのように取得しますか?
明らかに、コントローラー コンストラクターに IFoo パラメーターを追加し、ビュー モデルに IFoo プロパティを追加し、メソッドに IFoo パラメーターを追加して、それをチェーンに渡すことができます。コントローラー、ビュー モデル、ビュー、拡張メソッド。それは私には受け入れられないようです。
これを行うためのよりクリーンな方法はありますか?
DI コンテナーが最適だと思いました。正直に言うと、これまでは必要ありませんでした。単純に、Ninject を追加し、具体的な型をインターフェイスにバインドし、メソッド内で次の呼び出しを行うだけだと思い込んでいました。
var dt = kernel.Get<IFoo>();
これは、上記のコンストラクターパラメーター/プロパティトレイル全体を回避するのに役立つと思いました。どこかからカーネル変数を取得する必要があることはわかっていましたが、スレッド/セッション/リクエストスコープで呼び出すことについて何かを見たことを覚えていると思いました。カーネルが呼び出された場所に関係なく、カーネルの同じインスタンスをインスタンス化できると思っていましたが、調べてみると、それはカーネルが呼び出しているオブジェクト インスタンスに対してのみであることがわかりました...カーネル自体ではありません。
それで、Fooのインスタンスをメソッドに渡す方法はありますか?