我正在将 Koin 迁移到 Hilt,所以这很容易,但我陷入了一个困境,即如何像 Koin 一样在字段注入(inject)中传递参数, 在 koin 中,我可以像下面的代码一样在字段注入(inject)中传递参数
private val socket: Socket by inject { parametersOf(roomId) }
但我不知道如何在希尔特实现这个目标!如果有人知道这对我来说将会非常有帮助。 基本我想在某个类中传递一些动态值,那么我该如何使用它
最佳答案
您必须为您的类使用 @AssistedInject
,并为 id 参数使用 @Assisted
。
class MyClass @AssistedInject constructor(
@Assisted private val id: Long
)
然后创建@AssistedFactory
来创建MyClass的实例
@AssistedFactory
interface MyClassFactory {
fun create(roomId : Long): MyClass
}
然后将工厂注入(inject)到需要的地方并懒惰地使用它:
@Inject
late init var myFactory : MyClassFactory
private val myClass by lazy { myFactory.create(roomId) }
关于android - 刀柄 : Field Inject with Parameters like Koin,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69040408/