Не могу предоставить зависимость от подкомпонента - PullRequest
0 голосов
/ 04 марта 2019

Я новичок в 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)
}
...