30

添付の画像を使用して、私が何を意味したかを説明しています。

  • NInject によって管理されるいくつかのクラスがあります。それらの一部にはいくつかのシングルトン インスタンスがあり、その他は一時的な範囲にあります。画像では、青い四角形はシングルトンで、赤は一時的なものです。Processor は、他のクラスまたはインスタンスに依存します。

  • kernel.Get を使用して、Processor のインスタンスを毎回取得したいと考えています。ただし、プロセッサが使用するオブジェクトに異なる値を使用するたびに。画像の Action1 と Action2 を参照してください。コードは実際のものではありませんが、ここでは説明用です。

私のニーズを満たす既存の方法はありますか?Get 時にパラメーターを渡す

4

2 に答える 2

42

Processor がそれらの依存関係をコンストラクターの引数として受け取ることを考えると、コンストラクター引数を渡すことができるはずです。

var foo = new Ninject.Parameters.ConstructorArgument("foo", new Foo());
var bar = new Ninject.Parameters.ConstructorArgument("bar", new Bar());
var processor = kernel.Get<IProcessor>(foo, bar);

public Processor (Foo foo, Bar bar){
    this.foo = foo;
    this.bar = bar;
}
于 2012-05-30T17:56:09.217 に答える
1

OnActivation() 関数を使用すると、依存関係がアクティブ化されたときにイベントをフックできます。

于 2012-06-01T01:31:32.893 に答える