【问题标题】:Dependency injection inside extension function扩展函数内部的依赖注入
【发布时间】:2021-08-18 14:06:10
【问题描述】:

有没有办法在 Android Kotlin 中使用 DI 框架在扩展函数或全局函数中注入对象?

我在很多地方都使用了这个功能。所以我不想每次都传一个参数。

DI 框架可以是 Koin、Hilt、Dagger2 或其他任何框架。

类似的东西:

fun Context.showSomething() {
 val myObject = inject()
 showToast(myObject.text)
}

【问题讨论】:

    标签: android kotlin dagger-hilt koin extension-function


    【解决方案1】:

    您可以将其作为参数传递,而不是考虑使用 Inject

    fun Context.showSomething(myObject: String) {
     showToast(myObject.text)
    }
    

    【讨论】:

    • 我在很多地方都用到了这个功能。所以我不想每次都传递一个参数。
    • 别无选择,只能传入一个参数,或者将此方法放在构造的类上而不是顶级扩展上。
    【解决方案2】:

    使用 Koin,您可以这样做,

    fun Context.showSomething() {
      val myObject = GlobalContext.get().get()
      showToast(myObject.text)
    }
    

    但完全不推荐使用它。

    【讨论】:

      猜你喜欢
      • 2016-06-22
      • 1970-01-01
      • 2018-12-18
      • 2014-06-05
      • 1970-01-01
      • 2017-11-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多