Android 匕首模块依赖于另一个模块
我不熟悉迪戈和达戈 我在Android项目中有一个依赖关系图:Android 匕首模块依赖于另一个模块,android,dagger-2,dagger,Android,Dagger 2,Dagger,我不熟悉迪戈和达戈 我在Android项目中有一个依赖关系图: @Module(includes=[Module1, Module2, Module3]) ClassAModule @Module(includes=[classAModule, Module4]) ClassBModule @Module(includes=[ClassBModule]) ClassCModule @Module(includes=[ClassBModule]) ClassDModule 下面是模块3的样
@Module(includes=[Module1, Module2, Module3]) ClassAModule
@Module(includes=[classAModule, Module4]) ClassBModule
@Module(includes=[ClassBModule]) ClassCModule
@Module(includes=[ClassBModule]) ClassDModule
下面是模块3的样子
@Module
class Module3 {
@Provides
fun provideUrl(): Url{
return ...
}
}
ClassAModule需要Module3的Url,
但我希望ClassCModule和ClassDModule能够为ClassAModule提供不同的Url
我应该如何处理这个问题?要获取任何模块的特定url,您需要在提供者方法上定义注释 范例 前两个提供程序方法定义了两个不同类的WordDataSource实例,并使用两个不同的注释@Room和@Firestore进行定义 为了在WordRepository中获得两个不同的WordDataSource,我们在其构造函数中使用了@Room和@Firestore注释 享受Dagger中的注释功能:
如果您需要我提供更多详细信息,请随时联系。includes用于将其他模块包含到您的模块中。什么是para1,para2,等等?它们看起来不像模块。@EpicPandaForce我会编辑并弄清楚。它们应该是模块。使用@Named parameters可以提供相同类型的不同url。您可以为每个用例创建单独的组件,并将ModuleClass、class显示为组件模块。@sonnet thx。你能详细说明一下吗?
@Provides
@Room
fun provideRoomWordDataSource(): WordDataSource {
return RoomWordDataSource()
}
@Provides
@Firestore
fun provideFirestoreWordDataSource(): WordDataSource {
return FirestoreWordDataSource()
}
@Singleton
class WordRepository
@Inject constructor(
@Room private val room: WordDataSource,
@Firestore private val firestore: WordDataSource
) : Repository<String, Word>(rx, rm), WordDataSource {
}