web-dev-qa-db-ja.com

NInject:Get <T>()のときにパラメーターを渡す方法は?

添付の画像を使用して、意味を説明しています。

  • NInjectによって管理されるクラスがいくつかあります。それらのいくつかにはいくつかのシングルトンインスタンスがあり、その他は一時的なスコープにあります。この画像では、青い長方形は単数形で、赤は一時的なものです。プロセッサは、他のクラスまたはインスタンスに依存しています。

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

私のニーズを満たすことができる既存の方法はありますか?Pass parameters when Get

28
Zach

プロセッサーがこれらの依存関係をコンストラクターの引数として受け取る場合、コンストラクターの引数を渡すことができるはずです。

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;
}
38
Jerry Wang

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

0
Zach