对于Dagger 2,是否可以使用变量构造函数参数注入?

时间:2018-02-15 07:01:30

标签: android kotlin dagger-2 qualifiers

在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

但是,如果我想使用在Object声明侧定义的参数注入Info对象,如下所示,如下......(显然下面是不可能的),我该怎么办?

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

1 个答案:

答案 0 :(得分:1)

我认为您正在寻找的是AutoFactory。基本上它允许您注入一些参数并定义其他参数https://github.com/google/auto/tree/master/factory