我目前正在开发一个多模块应用程序.
基本上有4个模块:
>带有UI的app模块
>契约模块与模型/接口
>具有实际业务逻辑的实现模块
>依赖注入模块,允许为应用程序提供实现
这意味着应用程序不直接依赖于实现模块.
我基本上有以下设置:
应用程序组件
@Component( dependencIEs = { BaseComponent.class }, modules = { AndroIDInjectionModule.class, AndroIDSupportInjectionModule.class, ContributesAndroIDInjectorModule.class })@ApplicationScopepublic interface ApplicationComponent extends AndroIDInjector<MyApplication> { @Component.Builder interface Builder { Builder baseComponent(BaseComponent baseComponent); ApplicationComponent build(); }}
基本组件
@Component( modules = { ... })@Singletonpublic interface BaseComponent { @Component.Builder interface Builder { @BindsInstance Builder context(@ApplicationContext Context context); @BindsInstance Builder configuration(AppConfiguration configuration); BaseComponent build(); } ExposedDependency exposedDependency();}
这个设置工作得很好,除了使用安装在BaseComponent中的@ContributesAndroIDInjector的模块:我没有找到一种方法让包含AndroIDInjector的地图暴露在BaseComponent上并添加到ApplicationComponent.
有没有办法在BaseComponent中公开某种类型的地图,以便将AndroIDInjectors添加到ApplicationComponent?
(我会尝试将此问题提取到没有敏感信息的git仓库)
解决方法:
不是一个直接的答案,但我最终在我的业务逻辑模块中制作抽象活动/片段/服务,并在DI模块中制作具体类.
具体类从应用程序获取一个组件并使用它来注入依赖项.
几乎与AndroIDInjector之前的旧Dagger方式……
总结以上是内存溢出为你收集整理的android – 通过组件依赖项公开Multibinding全部内容,希望文章能够帮你解决android – 通过组件依赖项公开Multibinding所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)