如何在构造函数中只注入一个参数(其余为普通参数)?

问题描述 投票:0回答:1

如何在构造函数中只注入一个参数?

有这样的课程:

@AndroidEntryPoint 
class CustomClass @Inject constructor (val repository: Repository, val name: String) {}

假设我只想注入存储库参数,但我想在初始化期间传递名称参数,如下所示:

val customClass = CustomClass("name")

如何做?

android kotlin dependency-injection android-jetpack-compose dagger-hilt
1个回答
0
投票

遵循 dagger 文档此处

你可以做的是使用@AssistedInject注释并创建一个要使用的工厂。

class CustomClass @AssisgtedInject constructor (
    val repository: Repository, 
    @Assisted val name: String
) {

    @AssistedFactory
    interface CustomClassFactory {
        fun create(name: String): CustomClass
    }
}

然后你可以拥有@Inject CustomClassFactory并调用CustomClassFactory.create()来创建你的对象。

© www.soinside.com 2019 - 2024. All rights reserved.