我在 Android 应用程序中使用 Dagger 进行依赖注入。
我有 2 个应用程序类,我们称它们为 A 和 B。B 扩展 A 扩展android.app.Application
A 具有任何应用程序通用的职责和依赖关系。B 具有特定于当前应用程序的职责和依赖关系。
我希望能够拥有 2 个模块,AModule
并且BModule
,A 使用前者注入自身,B 使用后者注入自身。
问题是似乎BModule
必须在编译时引用 A 的类,否则会引发运行时错误。所以这就是BModule
避免错误的样子(注意injects
注释字段的值):
@Module(injects = {A.class}, library = true, complete = false)
public class BModule {
...
}
但我宁愿BModule
只知道B,像这样:
@Module(injects = {B.class}, library = true, complete = false)
public class BModule {
...
}
当我这样做时抛出的错误实际上表明被注入的实例 (A) 不是BModule
已知负责注入的类。
有没有办法实现这一点,不会产生运行时错误?
谢谢!