【发布时间】:2020-07-01 16:44:35
【问题描述】:
我正在尝试使用一些外部参数来实例化 Dagger(我正在编写一个库),但编译器一直给我以下错误:
错误:@Component.Builder 缺少所需模块的设置器或 组件:[com.example.domain.LibraryClient.Dependency]
Dependency 是一个简单的接口,我用它来获取 Application 以创建空间。
interface Dependency {
fun getApplication(): Application
}
这是我的库组件:
@Singleton
@Component(
modules = [AndroidInjectionModule::class, AndroidSupportInjectionModule::class, LibraryModule::class],
dependencies = [LibraryClient.Dependency::class])
interface LibraryComponent {
@Component.Builder
interface Builder {
@BindsInstance
fun client(client: LibraryClientImpl): Builder
fun build(): LibraryComponent
}
fun inject(target: LibraryClientImpl)
}
这是注射器:
object LibraryInjector {
private var deps: LibraryClient.Dependency? = null
fun setDependency(dependency: LibraryClient.Dependency) {
this.deps = dependency
}
fun init(client: LibraryClientImpl): LibraryComponent {
val appComponent = DaggerLibraryComponent.builder()
.dependency(deps)
.client(client)
.build()
appComponent.inject(client)
return appComponent
}
}
我已经看到一些例子,他们使用来自 @Component 的依赖项选项,这似乎是正确的。如果我删除 dependencies = [LibraryClient.Dependency::class] 它会通过构建。我错过了什么?
【问题讨论】: