如何在 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/

10-11 19:23