Kotlin Dagger 2 无法提供 Interactor
Kotlin Dagger 2 cannot provide Interactor
我开始使用 Dagger 2 并遇到了奇怪的问题。
我有 4 个模块,其中 3 个在 ApplicationComponent 中,另一个具有不同的范围 (UsersScope)。
将 UsersInteractor
注入 UsersPresenter
时出现问题
Error:[BlankFragment)] com.interactors.UsersInteractor cannot be provided without an @Inject constructor or from an @Provides-annotated method.
这是我的 类
@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
Dagger 没有 UsersInteractor
,因为您只提供 IUsersInteractor
。
将您的演示者提供程序方法切换为使用 IUsersInteractor
,它应该可以工作
fun provideUsersPresenter(usersInteractor: IUsersInteractor)
我开始使用 Dagger 2 并遇到了奇怪的问题。 我有 4 个模块,其中 3 个在 ApplicationComponent 中,另一个具有不同的范围 (UsersScope)。
将 UsersInteractor
注入 UsersPresenter
Error:[BlankFragment)] com.interactors.UsersInteractor cannot be provided without an @Inject constructor or from an @Provides-annotated method.
这是我的 类
@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
Dagger 没有 UsersInteractor
,因为您只提供 IUsersInteractor
。
将您的演示者提供程序方法切换为使用 IUsersInteractor
,它应该可以工作
fun provideUsersPresenter(usersInteractor: IUsersInteractor)