gpt4 book ai didi

android - Dagger 2 组件链依赖

转载 作者:太空宇宙 更新时间:2023-11-03 13:13:39 27 4
gpt4 key购买 nike

我有 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)。

如果我将 getter 添加到 CategoryRepositoryComponent

@DataScope
@Component(dependencies = AppComponent.class, modules = CategoryRepositoryModule.class)
public interface CategoryRepositoryComponent {
CategoryRepository getCategoryRepository();

DatabaseHelper getDatabaseHelper();

UserManager getUserManager();
}

但这看起来不正确,重复。你知道如何以干净、正确的方式解决这个问题吗?

谢谢,尼克。

最佳答案

您的做法是正确的。组件只能访问其直接父组件显式公开的类型。

当您作为 parent 不想将所有依赖项暴露给任何依赖您的人时,这会很有用。例如,Parent 可能依赖于 BankComponent,并且不想将 BankAccount 公开给它的 Children

另一种方法是使用子组件。文档和其他答案将有助于理解:Dagger 2 subcomponents vs component dependencies .

关于android - Dagger 2 组件链依赖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40095010/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com