У меня есть класс InteractorCache<T>
, который я хотел бы внедрить в разные места с помощью Koin.
Я хотел бы создать одноэлементный экземпляр этого класса на основе типа T
. Итак, если у меня есть 10 типов T
, я бы хотел 10 разных синглтонов.
Пока мне удалось сделать это с помощью следующего кода (это пример только с двумя типами, A и B):
val interactorAModule = module {
factory {
InteractorA(get())
}
}
val aCache = module {
single(named("A")){
InteractorCache<List<A>>()
}
}
val interactorBModule = module {
factory {
InteractorB(get())
}
}
val bCache = module {
single(named("B")){
InteractorCache<List<B>>()
}
}
Это работает, но есть много повторений, поскольку мне приходится создавать новый модуль кеширования (aCache, bCache) каждый раз, когда я создаю новый тип. Вместо этого я хотел бы сделать что-то вроде этого:
val cacheModule = module{
single<T>{
InteractorCache<T>()
}
}
так что есть только 1 объявление, которое работает для любого типа T.
Есть ли способ сделать это в Koin?