如何实现Koin依赖注入的可选参数?附可行方案
Koin依赖注入实现可选参数的可行方案
网上没找到合适的解决方案,这里分享一个可行的实现方式。要在Koin中实现依赖注入的可选参数,可使用以下代码:
val someModule: Module = module { factory<SomeClass> { (type: SomeEnum) -> when(type) { SomeEnum.A -> SomeClass(SomeEnum.A) SomeEnum.B -> SomeClass(SomeEnum.B) else -> SomeClass(SomeEnum.Default) } } factory<SomeClass> { SomeClass(SomeEnum.Default) } }
注意:factory的顺序至关重要,若将无参数的factory放在带参数的factory上方,将无法生效
该方案可通过以下两种方式使用:
class SomeViewModel(someClass: SomeClass) // ... // 使用默认参数的实例 factory { SomeViewModel(get()) } // 使用指定参数的实例 factory { SomeViewModel(get(parameters = { SomeEnum.A })) }
内容的提问来源于stack exchange,提问作者TNT
相关产品推荐
相关产品推荐

