首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >KotlinPoet -生成Koin模块

KotlinPoet -生成Koin模块
EN

Stack Overflow用户
提问于 2019-05-23 16:22:44
回答 1查看 406关注 0票数 1

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

代码语言:javascript
复制
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,也不知道如何在代码生成中引用这些导入的类。我也不能通过纯字符串生成来生成代码。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-23 17:39:43

您需要使用FileSpec生成文件,并为模块添加PropertySpec

它应该看起来像这样

代码语言:javascript
复制
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()

这不是完整的代码,但它应该会为您指明正确的方向。附注:我可能弄错了具体的名称,但这应该足够了

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56270979

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档