android-Dagger 2组件链依赖性

android-Dagger 2组件链依赖性,第1张

概述我有3个组成部分:主要应用组件:@Singleton@Component(modules={AppModule.class,UserModule.class,DatabaseModule.class})publicinterfaceAppComponent{ContextgetContext();DatabaseHelpergetDatabaseHelper();UserManagergetUserManager();}存

我有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组件链依赖性所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1091121.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-27
下一篇 2022-05-27

发表评论

登录后才能评论

评论列表(0条)

保存