我是KotlinPoet新手,我找不到如何创建以下Koin模块语句:
internal val apiModules = module {
single<Name1> { get<Retrofit>().create(Name1::class.java) }
single<Name2> { get<Retrofit>().create(Name2::class.java) }
}直接转换成Kotlin文件(没有包装器类)
我一直在尝试使用PropertySpec和CodeBlock,但我不知道如何导入Koin DSL,也不知道如何在代码生成中引用这些导入的类。我也不能通过纯字符串生成来生成代码。
发布于 2019-05-23 17:39:43
您需要使用FileSpec生成文件,并为模块添加PropertySpec
它应该看起来像这样
val moduleClassName = ClassName("org.koin.core.module.Module", "Module") //This will take care of the import
val moduleMemberName = MemberName("org.koin.dsl.module", "module") //This will take care of the import
val moduleInitilizerCodeBlock =
CodeBlock.Builder()
.beginControlFlow("%M", moduleMemberName) //This will take care of the {} and indentations
.addStatment(ADD ANOTHER CODE BLOCK SIMNILAR TO THIS FOR THE SINGLE/FACTORY)
.endControlFlow()
.build()
val module = PropertySpec.builder("YOUR MODULE NAME", moduleClassName)
.initializer(moduleInitilizerCodeBlock)
.build()
FileSpec.Builder("FILE PACKAGE", "FILE NAME")
.addProperty(module)
.build()这不是完整的代码,但它应该会为您指明正确的方向。附注:我可能弄错了具体的名称,但这应该足够了
https://stackoverflow.com/questions/56270979
复制相似问题