问问题
1870 次
1 回答
2
在绑定使用String实例的类之前,您应该在kodein.lazy初始化中将String “类”与自身的实例绑定
override val kodein = Kodein.lazy {
import(androidXModule(this@MyApplication))
bind() from singleton {String()} // ---> Add THIS line
bind() from singleton { MyLoginApi(instance(), instance()) }
bind<LoginDataSource>() with singleton { LoginService(instance()) }
bind<LoginRepository>() with singleton { LoginRepositoryImpl(instance()) }
}
...
您可以这样做,因为在这种情况下String类的构造函数是公共的,但不要将其作为最终解决方案,因为这对于其他数据类型(如Integer )是不可能的,因为它的构造函数是私有的。
真正的问题可能在于这种绑定
bind() from singleton { MyLoginApi(instance(), instance()) }
MyLoginApi中的实例是字符串的实例,由于您没有 MyLoginApi 接口的实现, Kodein库直接尝试查找这些实例的定义位置。所以最好创建 MyLoginApiImpl 然后替换:
bind() from singleton { MyLoginApi(instance(), instance()) }
和
bind<MyLoginApi>() with singleton { MyLoginApiImpl(instance())}
于 2020-04-30T10:17:20.403 回答