gpt4 book ai didi

dependency-injection - di.dart 中的单例

转载 作者:行者123 更新时间:2023-12-01 10:41:53 26 4
gpt4 key购买 nike

如何在 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,我确实想要一个 Singleton,但是在我的例子中,我想从我的 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com