android - 刀柄 : Field Inject with Parameters like Koin

标签 android dagger-hilt koin

我正在将 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) } 

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

关于android - 刀柄 : Field Inject with Parameters like Koin,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69040408/

相关文章:

Android 整洁架构用例

javascript - react native , 'is not usable as a native method argument'

android - 强制 Android 应用程序使用特定 Intent ,而不是显示 Intent 菜单

android - Singleton 类应该使用什么?来自 Dagger 的真正的 Singleton 或 @Singleton 注释?

android - 仅在编辑器或开发版本 (Unity 3D) 中登录 Facebook

android - 应用插件失败 'dagger.hilt.android.plugin'

android - 找不到@HiltWorker注解

android - Koin 2.2.1 : I cannot use "by viewModel" in Activity

android - BeanInstanceCreationException : Can't create definition for Single

android - 未解析的引用 :test in KoinTest