【发布时间】:2017-05-03 20:24:43
【问题描述】:
我正在处理一个项目,我正在尝试使其尽可能模块化。
我正在尝试使用 @Module(includes = {}) 注释来实现我的目标,但效果不太好。
我的所有 Java 代码都有一个 gradle 模块,其中每个部分都有一个模块(例如,AboutModule 用于关于页面依赖项)。然后,对于整个“Core” gradle 模块,我有一个名为“CoreModule”的 Dagger 2 模块,如下所示:
@Module(includes = {
AddonModule.class,
VersionModule.class,
AboutModule.class}
)
public class CoreModule {
}
我是否认为在所有应用程序代码所在的 Android gradle 模块中,我应该能够将该模块包含在一个组件中,然后该组件可以@Inject CoreModule 中列出的所有模块中的任何内容?
目前,我从这些组件中收到编译错误,表明它们注入的文件正在“要求”模块中没有的完全不同的类。
例如,我有一个 GitHubComponent,它被注入到 GitHubActivity 中,并且还尝试使用 @Inject 注释 GithubService 进行注入,但是编译器抛出了此类尝试注入另一个类的错误...在目标文件的任何地方都没有提到。我已对此进行了简化以尝试清除错误,但我没有看到哪里出错了。
我找不到这方面的任何文档。包含部分实际上是做什么的?我是否正确使用它,因此错误在其他地方?
【问题讨论】:
标签: android dependency-injection module dagger-2