I use Hilt . I have one interface but I have two classes that have implemented them. I need @Bind interface by different implemented in ViewModels . pleas help me ? create custom Component? or use custom Scope ?
I use Hilt . I have one interface but I have two classes that have implemented them. I need @Bind interface by different implemented in ViewModels . pleas help me ? create custom Component? or use custom Scope ?
A given code from you would help, but lets assume this:
interface YourInterface {}
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()
This should do the job.