首页 > 解决方案 > Hilt : 带有 Koin 等参数的字段注入

问题描述

我正在将 Koin 迁移到 Hilt,所以它很容易,但我被困在一点上,我怎样才能像 Koin 一样在字段注入中传递参数,在 koin 中,我能够像下面的代码一样在字段注入中传递参数

  private val socket: Socket by inject { parametersOf(roomId) }

但我不知道如何在 Hilt 中实现这一点!如果有人知道这对我很有帮助。基本我想在某个类中传递一些动态值,那么我该如何使用它

标签: androiddagger-hiltkoin

解决方案


您必须使用@AssistedInject您的课程和@Assistedid 参数。

class MyClass @AssistedInject constructor(
  @Assisted private val id: Long
)

然后创建@AssistedFactory将创建 MyClass 的实例

@AssistedFactory
  interface MyClassFactory {
    fun create(roomId : Long): MyClass
  }

然后在需要的地方注入工厂,懒惰地使用:

@Inject 
late init var myFactory : MyClassFactory

private val myClass by lazy { myFactory.create(roomId) } 

阅读:https ://dagger.dev/dev-guide/assisted-injection.html


推荐阅读