android - 对于 Dagger 2,是否可以进行可变构造函数参数注入(inject)?

标签 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)

我可以让它们绑定(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/

相关文章:

android - 显示在 ListView 上

android - Kotlin 未解析引用 : with

android - 导航时 Navigation Host 变为 null(Android 导航组件)

java - Android 仪器测试中的 Dagger 2 注入(inject)

Android Fragments 基础知识 : why? 这在概念上是错误的吗?

android - 在 Android 上播放直播流

kotlin - Kotlin覆盖父类(super class)型变量

android - Dagger2 与 Android 中的应用程序类

android - Dagger 2,底部导航和注入(inject)

android:根据ViewPager中的每个Fragment更新ActionBar项目?