Kotlin Koin-如何泛化单例创建?

Kotlin Koin-如何泛化单例创建?,kotlin,dependency-injection,singleton,koin,Kotlin,Dependency Injection,Singleton,Koin,我有一个类interactiorCache,我想使用Koin在不同的地方注入它 我想基于类型T创建该类的单例实例。因此,如果我有10种类型T,我想要10种不同的单例 到目前为止,我用以下代码实现了上述功能(这是一个只有两种类型的示例,A和B): val interactioramodule=模块{ 工厂{ interactitora(get()) } } val aCache=模块{ 单一(名为(“A”)){ InteractiorCache() } } val interactorBModul

我有一个类
interactiorCache
,我想使用Koin在不同的地方注入它

我想基于类型
T
创建该类的单例实例。因此,如果我有10种类型
T
,我想要10种不同的单例

到目前为止,我用以下代码实现了上述功能(这是一个只有两种类型的示例,A和B):

val interactioramodule=模块{
工厂{
interactitora(get())
}
}
val aCache=模块{
单一(名为(“A”)){
InteractiorCache()
}
}
val interactorBModule=模块{
工厂{
interactiorb(get())
}
}
val bCache=模块{
单身(名为“B”)){
InteractiorCache()
}
}
这是可行的,但是有很多重复,因为每次创建新类型时,我都必须创建一个新的缓存模块(aCache,bCache)。我希望能够做这样的事情:

val cacheModule = module{
     single<T>{
         InteractorCache<T>()
    }
}
val cacheModule=模块{
单身{
InteractiorCache()
}
}
因此,对于任何类型的T,只有一个声明有效


在Koin中有办法做到这一点吗?

虽然现在已经晚了,但将泛型或T作为单例的想法是不好的,当您声明一个类单例时,它将运行一个实例,因此运行时错误是InteractiorCache()与InteractiorCache()不兼容或不匹配作为第一个分配T的类,例如类A InteractiorCache(),它将是A的固定实例,不能再分配给类B

val cacheModule = module{
     single<T>{
         InteractorCache<T>()
    }
}