android - 无法使用 Koin、android 创建 DI 进行改造?
问题描述
我正在尝试让 DI 使用 KOIN 创建一个改造实例,这是模块
val networkModule = module {
factory { provideRetrofit(get()) }
single { provideNetworkApi(get()) }
}
fun provideRetrofit(): Retrofit {
return Retrofit.Builder()
.baseUrl(NetworkConstant.BASE_URL)
.addConverterFactory(MoshiConverterFactory.create())
.client(OkHttpClient.Builder().build())
.build()
}
fun provideNetworkApi(retrofit: Retrofit): NetworkCall =
retrofit.create(NetworkCall::class.java)
在应用程序类
class BaseApp :Application() {
override fun onCreate() {
super.onCreate()
startKoin {
androidLogger()
androidContext(this@BaseApp)
modules(listOf(prefModule,networkModule))
}
}
}
编译器显示错误provideRetrofit(get()
Too many arguments for public fun provideRetrofit():
我能够为另一个班级创建 DI
val prefModule = module {
single { AppPreference(androidContext()) }
}
有人可以指出我这里有什么问题吗?
解决方案
是因为get()
val networkModule = module {
factory { provideRetrofit() }
single { provideNetworkApi(get()) }
}
推荐阅读
- javascript - React 功能组件没有以相同的状态或道具重新渲染
- nginx - 如何创建 nginx 重写以将 / 添加到 url
- c - 在 printf 中使用 &ersand 和方括号
- java - 使用 java.net.http.HttpClient 的 GOAWAY BItBucket API
- c# - Android webview 在继续运行后挂起/崩溃(2-3 天)
- docker - 在容器内更新 cgroup 的最低功能是什么?
- django - 如何在 IIS 服务器上运行多个 django 应用程序?
- vim - Vim 不尊重 vimrc 缩进设置
- php - 如何在codeigniter rest api中使用刷新令牌?
- amazon-web-services - Amazon AWS SES 错误 - 限制失败:超出最大 SigV2 SMTP 发送速率