KotlinPoet-生成Koin模块

时间:2019-05-23 08:22:44

标签: kotlin lambda koin kotlinpoet

我是KotlinPoet的新手,我找不到如何创建以下Koin模块语句:

some_function_val

直接进入Kotlin文件(无包装类)

我一直在玩PropertySpec和CodeBlock,但是我不知道如何导入Koin DSL或如何在代码生成中引用那些导入的类。我也无法通过纯字符串生成来生成代码。

1 个答案:

答案 0 :(得分:3)

您需要使用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()

这不是完整的代码,但是应该为您指明正确的方向。 旁注:对于特定的命名,我可能会错了,但同样应该足够