在 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)
我可以让它们绑定(bind)为
@Inject
@field:Named(LOVE)
lateinit var infoLove: Info
@Inject
@field:Named(HELLO)
lateinit var infoHello: Info
但是,如果我想注入(inject)一个 Info
对象,其参数定义在对象声明端,如下所示,例如如下...(显然以下是不可能的),我该怎么做?
@Inject
@field:Named("My String that I want to send into Info as argument")
lateinit var infoWithAboveAsArgument: Info
最佳答案
我认为您正在寻找的是 AutoFactory。基本上它允许您注入(inject)一些参数并定义其他参数 https://github.com/google/auto/tree/master/factory
关于android - 对于 Dagger 2,是否可以进行可变构造函数参数注入(inject)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48801536/