我已经开始使用匕首2,并面临着奇怪的问题。我有4个模块,其中3个在ApplicationComponent中,另一个有不同的作用域(UsersScope)。
向UsersInteractor中注入UsersPresenter的问题
错误:如果没有@Inject构造函数或@Provides注释的方法,就不能提供com.interactors.UsersInteractor。
这是我的课
@Singleton
@Component(modules = arrayOf(ApplicationModule::class, NetworkModule::class, DbModule::class))
interface ApplicationComponent {
fun plusUsersComponent(usersModule: UsersModule): UsersComponent
}
@Module
class ApplicationModule(private val context: Context) {
@Provides
@Singleton
fun provideContext(): Context = context
}
@Subcomponent(modules = arrayOf(UsersModule::class))
@UsersScope
interface UsersComponent {
fun inject(blankFragment: BlankFragment)
}
@Module
class UsersModule {
@Provides
@UsersScope
fun provideUsersRepository(restService: RestService, dbService: DbService): IUsersRepository =
UsersRepository(restService, dbService)
@Provides
@UsersScope
fun provideUsersInteractor(usersRepository: UsersRepository): IUsersInteractor =
UsersInteractor(usersRepository)
@Provides
@UsersScope
fun provideUsersPresenter(usersInteractor: UsersInteractor): IUsersPresenter =
UsersPresenter(usersInteractor)
}
@Scope
@Retention(AnnotationRetention.RUNTIME)
annotation class UsersScope发布于 2017-05-23 13:05:35
Dagger不知道UsersInteractor,因为您只提供IUsersInteractor。
将演示者提供程序方法转换为使用IUsersInteractor,它应该可以工作
fun provideUsersPresenter(usersInteractor: IUsersInteractor)https://stackoverflow.com/questions/44135430
复制相似问题