我正在尝试使用Koin制作一个Android玩具项目。
我的项目有一个存储库和两个数据源(远程/缓存)。
以下是数据源:
interface DataSource
class CacheDataSource: DataSource
class RemoteDataSource: DataSource
这是存储库:
interface MyRepository
class MyRepositoryImpl(
val cacheDataSource: DataSource,
val remoteDataSource: DataSource
): MyRepository
所以...我正在编写如下的appModule代码:
val appModule = module {
single<DataSource>(StringQualifier("cache")) { CacheDataSource() }
single<DataSource>(StringQualifier("remote")) { RemoteDataSource() }
single<MyRepository> { MyRepositoryImpl() as MyRepository by inject("???") }
}
然后...
我也尝试了以下代码...:
val appModule = module {
single<DataSource>(StringQualifier("cache")) { CacheDataSource() }
single<DataSource>(StringQualifier("remote")) { RemoteDataSource() }
single<MyRepository> { MyRepositoryImpl(get<MoviesDataSource>(name = "cache"), get<MoviesDataSource>(name = "remote")) }
}
但是我不知道该怎么做?
答案 0 :(得分:0)
我找到了解决方法...
val appModule = module {
single<DataSource>(StringQualifier("cache")) { CacheDataSource() }
single<DataSource>(StringQualifier("remote")) { RemoteDataSource() }
single<MyRepository> { MyRepositoryImpl(get(StringQualifier("cache")), get(StringQualifier("remote"))) }
}
答案 1 :(得分:0)
您也可以这样做:
val appModule = module {
single<CacheDataSource> { CacheDataSource() }
single<RemoteDataSource> { RemoteDataSource() }
single<MyRepository> { MyRepositoryImpl(get(), get()) }
}