Для Dagger 2: возможно ли внедрение аргументов конструктора переменных?

В Dagger 2 я мог бы использовать @Qualifier для создания экземпляров двух объектов одного типа с разными аргументами, например.

@Module
open class Bag {
    @Provides @Named(LOVE)
    open fun sayLoveDagger2(): Info {
        return Info("I Love You")
    }

    @Provides @Named(HELLO)
    open fun sayHelloDagger2(): Info {
        return Info("Hello Dagger 2")
    }
}

class Info(val text: String)

И я мог бы связать их, как

@Inject
@field:Named(LOVE)
lateinit var infoLove: Info

@Inject
@field:Named(HELLO)
lateinit var infoHello: Info

Однако, если я хочу внедрить объект Info с аргументом, определенным на стороне объявления объекта, как показано ниже, например как показано ниже ... (очевидно, что это невозможно), как я могу это сделать?

 @Inject
 @field:Named("My String that I want to send into Info as argument")
 lateinit var infoWithAboveAsArgument: Info

person Elye    schedule 15.02.2018    source источник


Ответы (1)


Я думаю, что вы ищете AutoFactory. По сути, он позволяет вам вводить некоторые параметры и определять другие https://github.com/google/auto/tree/master/factory

person Clapa Lucian    schedule 15.02.2018