通用“ Class”注入的Dagger2

时间:2020-02-06 01:54:36

标签: android generics kotlin dagger-2

我正在尝试使用Dagger2在对象中执行构造函数注入

@Singleton
class MyObject @Inject constructor(
    val context: Application,
    val launchActivity: Class<out Activity>
) {}

我的AppComponent看起来像这样:

@Singleton
interface AppComponent {

    @Component.Builder
    interface Builder {
        @BindsInstance
        fun application(application: Application): Builder

        @BindsInstance
        fun launcher(launchActivity: Class<out Activity>): Builder

        fun build(): AppComponent
    }
}

我正在将该组件构建为:

DaggerAppComponent
    .builder()
    .application(context)
    .launcher(MyLauncherActivity::class.java)
    .build()

纯粹用Kotlin编译上述设置,这是我得到的错误:

error: incompatible types: Factory<Class<CAP#1>> cannot be converted to Provider<Class<? extends Activity>>
where CAP#1 is a fresh type-variable:
CAP#1 extends Activity from capture of ? extends Activity

是否可以使用匕首进行此类设置,或者是否完全缺少某些东西。我读过匕首多重绑定,这是这种设置的一种选择吗?

0 个答案:

没有答案
相关问题