Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/184.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 匕首模块依赖于另一个模块_Android_Dagger 2_Dagger - Fatal编程技术网

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的样

我不熟悉迪戈和达戈

我在Android项目中有一个依赖关系图:

@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 {
    }