作者:辽宁何氏医学院视光张丽杰 | 来源:互联网 | 2023-02-04 20:08
我正在研究一个项目,我试图尽可能地模块化.
我正在尝试使用@Module(includes = {})注释来实现我的目标,并且它的工作效果不佳.
我有一个用于所有Java代码的gradle模块,并且每个部分都有一个模块(例如,关于页面依赖关系的AboutModule).然后,对于整个"Core"gradle模块,我有一个名为"CoreModule"的Dagger 2模块,如下所示:
@Module(includes = {
AddonModule.class,
VersionModule.class,
AboutModule.class}
)
public class CoreModule {
}
我是否正确地认为在所有应用程序代码所在的Android gradle模块中,我应该能够将该模块包含在Component中,然后Component可以@Inject从CoreModule中列出的所有模块中获取任何内容?
目前我从这些组件中得到编译错误,表明他们注入的文件正在"询问"一个不在模块中的完全不同的类.
例如,我有一个注入GitHubActivity的GitHubComponent并尝试使用@Inject注释GithubService注入,但是编译器抛出了这个类试图注入另一个类的错误...那不是提到目标文件中的任何位置.我已经试着去试试这个错误,但是我没有看到它出错的地方.
我在这方面找不到任何文件.包含部分实际上做了什么?我使用它是否正确,因此错误在其他地方?
1> Jeff Bowman ..:
请参阅Module.includes的文档:
附加@Module
注释的类,用于组成此模块.包含的模块的重复数据删除贡献以及它们的递归包含都是对象图的贡献.
简而言之,是的,Module.includes是一种在包含封闭模块(在您的示例中为CoreModule)的任何内容中添加对列出的模块(示例中为AddonModule,VersionModule和AboutModule)的依赖关系的方法.