Я новичок в Dagger2 и изучаю его в тестовом проекте.Я хочу предоставить SuperObject
из подкомпонента с пользовательской областью, но получил ошибку: [Dagger/MissingBinding] ru.rsb.daggerproject.objects.SuperObject cannot be provided without an @Inject constructor or an @Provides-annotated method.
Я уже указал, что метод предоставляет SuperObject
с @Provides
аннотацией.Пожалуйста, объясните мне мои ошибки.
У меня есть такой график:
@Singleton
@Component(modules = [AndroidInjectionModule::class, ModuleA::class, ModuleB::class, ActivityModule::class])
interface AppComponent {
@Component.Builder
interface Builder {
@BindsInstance
fun application(application: Application): Builder
fun build(): AppComponent
}
fun inject(app: App)
}
@Module(subcomponents = [Subcomponent::class])
class ModuleB {
@Singleton
@Provides
fun provideDepB(): DepB {
return DepB(Random.nextInt())
}
@Singleton
@Provides
fun provideObjectWithDepB(value: DepB): ObjectWithDepB {
return ObjectWithDepB.newInstance(value)
}
}
@Subcomponent(modules = [SubcomponentModule::class])
@CustomScope
interface Subcomponent {
@Subcomponent.Builder
interface Builder {
fun subcomponentModule(subModule: SubcomponentModule): Builder
fun build(): ru.rsb.daggerproject.Subcomponent
}
}
@Module
class SubcomponentModule {
@CustomScope
@Provides
fun provideSuperObject(value: ObjectWithDepB): SuperObject = SuperObject.newInstance(value)
}