Inversifyでは、複数のオブジェクト間で単一のオブジェクトインスタンス(過渡寿命を持つ)を共有する最良の方法は何ですか?複数の注入されたインスタンス間で一時オブジェクトインスタンスを共有するにはどうすればよいですか?
だから、私たちは持っているとしましょう:
@injectable()
class Foo1 {
@inject("bar")
private bar: IBar;
}
@injectable()
class Foo2 {
@inject("bar")
private bar: IBar;
}
@injectable()
class Controller {
@inject("foo1")
private foo1: Foo1;
@inject("foo2")
private foo2: Foo2;
}
「バー」シングルトンをすることなく、それが注入されたインスタンスの両方foo1
とfoo2
が同じバーインスタンスを取得するように、IoCコンテナを設定することが可能ですコントローラはどこかに注入されます。
私は考えることができる明白なアプローチは、以下のとおりです。
constructors/newablesとしてFOO1とfoo2はを登録するには、それらは一般的なバーのオブジェクトとそれらをインスタンス化
ControllerFactory
に注入しています。新しいコントローラをインスタンス化する必要があるたびに作成された子コンテナ内にシングルトンとしてhierarchical DIとレジスタバーを使用します。
明示的なインスタンス化が必要なため、1は理想的ではないと思います。
これを処理するには、より良いアプローチがありますか?
プロパティ注射は説明のための –