我有3个组成部分:
主要应用组件:
@Singleton@Component(modules = {AppModule.class, UserModule.class, DatabaseModule.class})public interface AppComponent { Context getContext(); DatabaseHelper getDatabaseHelper(); UserManager getUserManager();}
存储库组件:
@DataScope@Component(dependencIEs = AppComponent.class, modules = categoryRepositoryModule.class)public interface categoryRepositoryComponent { categoryRepository getcategoryRepository();}
和屏幕组成:
@MenuScope@Component(dependencIEs = categoryRepositoryComponent.class, modules = {MenuModule.class, DrawerModule.class})interface MenuComponent { voID inject(MenuActivity activity);}
问题是我的MenuComponent无法看到提供AppComponent的依赖项.但是MenuComponent取决于categoryRepositoryComponent,而categoryRepositoryComponent取决于AppComponent,因此MenuComponent应该看到AppComponent(MenuComponent-> categoryRepositoryComponent-> AppComponent).
如果我将吸气剂添加到categoryRepositoryComponent
@DataScope@Component(dependencIEs = AppComponent.class, modules = categoryRepositoryModule.class)public interface categoryRepositoryComponent { categoryRepository getcategoryRepository(); DatabaseHelper getDatabaseHelper(); UserManager getUserManager();}
但是,多数民众赞成在看起来不正确,重复.您知道如何以干净,正确的方式解决此问题吗?
谢谢,
缺口.
解决方法:
您的方法是正确的.组件只能访问其直接父组件显式公开的类型.
作为父母,当您不想将所有依赖项公开给任何依赖您的人时,这很有用.例如,父级可能依赖BankComponent而不希望向其子级公开BankAccount.
另一种方法是使用子组件.该文档和其他答案将有助于您理解:Dagger 2 subcomponents vs component dependencies.
总结以上是内存溢出为你收集整理的android-Dagger 2组件链依赖性全部内容,希望文章能够帮你解决android-Dagger 2组件链依赖性所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)