我有一个用例似乎表明需要scope.removeModules(...)
在Toothpick DI 库中提供类似的东西。
在一个 Android 应用程序中,我有一个模块,它创建一个与类的绑定,该类通过 Retrofit-library 接口与服务器通信。实际的服务器 url 在创建该类时指定,因此作为模块的构造函数参数提供:
class NetworkModule(serverUrl: String) {
init {
bind(MyServerApi::class.java).toInstance(createMyApi(serverUrl));
}
}
现在的问题是这个模块是一个应用程序范围的模块,必须添加到应用程序范围(根范围),但serverUrl
用户稍后可以重新配置。这意味着MyServerApi
需要重新创建。一旦更改了 url,就能够将整个模块删除 + 再次添加到根范围,这似乎很棒。
这样,整个应用程序仍然可以Toothpick.openScope(getApplication())
访问并访问最新配置的MyServerApi
与正确的对话实例serverUrl
。
我想知道我是否遗漏了这个库做出的一些设计选择,而无需向removeModules()
库中添加方法就可以实现上述目标?