【发布时间】:2018-07-11 21:45:30
【问题描述】:
我有一个简单的类如下
class MainString(val msg: String)
我想为它注入不同的参数,所以我按照https://google.github.io/dagger/users-guide 中显示的指南使用@Named 限定符
我的 AppModule 有了
@Provides @Named("Two")
fun provideTwoMainString(): MainString {
return MainString("Two")
}
@Provides @Named("One")
fun provideOneMainString(): MainString {
return MainString("One")
}
在我的 MainActivity 中,我只是调用
@Inject @Named("One")
lateinit var stringOne: MainString
@Inject @Named("Two")
lateinit var stringTwo: MainString
但是,当我编译时,它会抱怨
Error:(11, 1) error: com.elyeproj.demo_dagger_scope.MainString cannot be provided without an @Inject constructor or from an @Provides- or @Produces-annotated method.
似乎希望我提供另一个没有限定符的 Provider。因此,如果我添加以下内容,所有内容都会编译。但我不习惯,因为我想要不同的参数注入。
@Provides
fun provideMainString(): MainString {
return MainString("Solo")
}
我做错了什么?
【问题讨论】: