如何在 di.dart 中创建单例实例?
好像如果我这样做:
module = new Module()
..bind(GameRepository)
..bind(MessageFactory)
..bind(Broadcaster);
如果我这样做,我的
GameRepository
会多次实例化injector.get(GameRepository)
我试着做
..bind(GameRepository, toValue: new GameRepository())
这似乎有效,但很容易,因为
GameRepository
没有参数,但不应该有办法告诉 di 框架将其绑定(bind)为单例,而不需要我实例化它(并维护其构造函数调用?)编辑:
@Günter,我确实想要一个单例,但是在我的情况下,我想使用来自 redstone.dart 资源和外部的
GameRepository
。所以我绑定(bind) GameRepository
然后这样做:// To use it outside of the resource
injector = new ModuleInjector([modules.getProductionModule()]);
// To use it in redstone
app.addModule(module);
现在我可以看到红石对
GameRepository
的引用与我在执行 injector.get(GameRepository)
时得到的引用不同我不知道这个问题是否变得太具体了:P
最佳答案
据我所知,DI 总是返回相同的实例,因此一切都是单例。如果你不想要单例,你可以绑定(bind)一个工厂。
有关更多详细信息,请参阅 https://stackoverflow.com/a/22944185/217408
关于dependency-injection - di.dart 中的单例,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29590217/