通过刀柄中的不同具体类绑定接口?

时间:2020-12-26 16:00:34

标签: android dagger dagger-hilt

我使用刀柄。 我有一个接口,但我有两个实现它们的类。 我需要在 ViewModels 中实现不同的 @Bind 接口。 请帮帮我? 创建自定义组件?或使用自定义范围?

1 个答案:

答案 0 :(得分:2)

您提供的给定代码会有所帮助,但让我们假设:

您的界面

 saveCanvas = async (call_back_) => {
    const FlowState = JSON.parse(sessionStorage.getItem('FLOWSTATE'))
    ...
    ...
    await html2canvas(div).then((screenshot) => {
           ...
           ...
           sessionStorage.setItem('FLOWSTATE', JSON.stringify(FlowState))
        })
    } 
}

interface YourInterface {}

Di 模块

class MyFirstClassImpl @Inject constructor() : YourInterface

class MySecondClassImpl @Inject constructor() : YourInterface

视图模型

@Module
@InstallIn(SingletonComponent::class)
inteface YourClassModule {
    @Binds
    @MyFirstClass
    fun provideMyFirstClass(class: MyFirstClassImpl): YourInterface

    @Binds
    @MySecondClass
    fun provideMySecondClass(class: MySecondClassImpl): YourInterface

}

@Qualifier
@Retention(AnnotationRetention.RUNTIME)
annotation class MyFirstClass

@Qualifier
@Retention(AnnotationRetention.RUNTIME)
annotation class MySecondClass

这应该可以完成工作。