如何在dagger2中向组件添加依赖项

时间:2019-04-23 11:56:26

标签: android dagger-2

我想使用新的dagger2方法向根组件添加一个组件。

使用旧方法可以很好地工作,我们可以创建组件并手动提供所有其他组件和模块。

但是我不知道如何使用新的dagger2方法来实现它。

@Component(modules = {AndroidInjectionModule.class, AppModule.class, ActivityBuilder.class},dependencies = CoreComponent.class)

public interface AppComponent extends AndroidInjector<MyApplication>

 {

  @Component.Builder
    abstract class Builder extends AndroidInjector.Builder<MyApplication> {}

}

任何人都不知道如何将Core Component.class添加到App Component中。

1 个答案:

答案 0 :(得分:0)

AndroidInjector具有预定义的inject方法,但在其他情况下则与任何@Component一样对待。因此,我想您可以从头开始编写自己的AppComponent.Builder

// In AppComponent, which extends AndroidInjector<MyApplication>
@Component.Builder
interface Builder {
    Builder coreComponent(CoreComponent coreComponent);

    // You may need this for installed @Modules too:
    // public abstract Builder appModule(AppModule appModule);

    // The following setter and build are from AndroidInjector.Builder
    @BindsInstance
    Builder myApplication(MyApplication myApplication);

    AppComponent build();
}

然后构建一个AppComponent

CoreComponent coreComponent = /* ... */;
AppComponent appComponent =
    DaggerAppComponent.builder()
        .coreComponent(coreComponent)
        .myApplication(myApplication)
        .build();

我无法评论是否建议这样做,因为dagger.android示例似乎更喜欢子组件而不是组件依赖项。