【问题标题】:HILT dependency injectionHILT 依赖注入
【发布时间】:2021-05-31 15:26:34
【问题描述】:

如何注入抽象类 我有一个抽象类

abstract class FactoryMediator : xx, yy,zz {}

我正在尝试使用@Module@Binds 注释为此类启动对象。但是这样创建失败并抛出错误。

@Module
@InstallIn(SingletonComponent::class)
abstract class PolicyModule {
    @Binds
    abstract  fun bindFactoryMediator(factoryMediator: FactoryMediator): PolicyFactoryMediator
}

但这会出错。我犯了什么错误?请让我知道如何为抽象类创建。我们如何注入抽象类? 从文档中,它说。 有时一个类型不能被构造函数注入。这可能有多种原因。例如,您不能构造函数注入接口。您也不能构造函数注入您不拥有的类型,例如来自外部库的类。在这些情况下,您可以使用 Hilt 模块为 Hilt 提供绑定信息。

Hilt 模块是一个带有@Module 注释的类。像 Dagger 模块一样,它通知 Hilt 如何提供某些类型的实例。与 Dagger 模块不同,您必须使用 @InstallIn 注释 Hilt 模块,以告诉 Hilt 每个模块将被使用或安装在哪个 Android 类中。

【问题讨论】:

    标签: android kotlin dependency-injection dagger-hilt


    【解决方案1】:

    您的方法语法稍有错误,您目前有:

    @Binds
    abstract fun bind(abstractClass: AbstractClass): ImplementationClass
    

    而他们应该是相反的,所以:

    @Binds
    abstract fun bind(implementationClass: ImplementationClass): AbstractClass
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多