我用希尔特。
我有一个接口,但我有两个实现它们的类。
我需要在 ViewModels 中实现不同的 @Bind 接口。
请帮助我?
创建自定义组件?或使用自定义范围?
您提供的代码会有所帮助,但让我们假设:
您的界面
interface YourInterface {}
Classes
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
视图模型
class YourViewModel @ViewModelInject constructor(
@MyFirstClass private val firstClass: YourInterface,
@MySecondClass private val secondClass: YourInterface
) : ViewModel()
这应该可以完成工作。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)