【发布时间】:2017-08-07 10:50:47
【问题描述】:
嘿,我有三个组件:
应用程序 -> 提供上下文(例如 LocationUsecase)
ApiService -> 提供改造(休息调用)
- DBService -> 提供 RoomDB(保存在 SQLite 中)
有时我想在我的 ViewModel 中使用多个组件
- 但我遇到了异常,我可能不会 .inject(ViewModel) 对许多组件使用同一个类。
UserViewModel{
@Inject ApiService api;
@Inject DatabaseService db;
public User(){
Application.getApiComponent.inject(this)
Application.getDBComponent.inject(this)
}
}
因为我想解耦组件(用于测试目的) 我决定将依赖项添加到我的 ApplicationComponent 中,并在注入 Application 时能够使用 albo DB 和 REST
@PerApplication
@Component(dependencies = {DBComponent.class, RestApiComponent.class},
modules = {ApplicationModule.class})
public interface ApplicationComponent{...}
@DbScope
@Component(modules = {DBModule.class})
public interface DBComponent {...}
@RestScope
@Component(modules = {RestApiRetrofitModule.class})
public interface RestApiComponent {...}
这次我遇到了编译错误:
PerApplication ApplicationComponent 依赖于多个作用域组件: @DbScope 数据库组件 @RestScope RestApiComponent
问题是当人们使用多个依赖项时,我没有找到任何示例 - 它是否受到限制? 当我删除 DBComponent 的 @Scope 时,这很好 - 但我有无范围的实例,每次新实例都会返回 当我从依赖项中删除一个组件时,我也将毫无错误地构建。
如何在我的组件中使用两个依赖项?
【问题讨论】: