在 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;
}
如果不使“bar”成为单例,是否可以配置 IoC 容器,以便两个注入的实例foo1
并foo2
在控制器注入某处时获得相同的 bar 实例。
我能想到的明显方法是:
要将 Foo1 和 Foo2 注册为constructors/newables,请将它们注入到一个
ControllerFactory
使用公共 bar 对象实例化它们的 a 中。使用分层 DI并将 bar 注册为子容器中的单例,该子容器在每次需要实例化新控制器时创建。
由于需要显式实例化,我认为 1 并不理想。
有没有更好的方法来处理这个?