Dagger 2:生成的代码无法编译

时间:2016-11-21 20:16:39

标签: dagger-2

所有

我会感激一些帮助,我有一个匕首生成的代码实际上没有编译的情况。我们对子组件进行了相当精细的设置,如下图所示,以S结尾的组件是子组件。

  

A - BS

     

|

     

CS - DS

     

|

     

ES - FS

所有子组件都包含构建器接口,如下所示:

ValueError: x and y must have same first dimension

在A i的模块中,有以下内容可以访问其他组件:

@Subcomponent(modules = BS_Module.class)
public interface BS {
    @Subcomponent.Builder
    public interface Builder {
        Builder requestModule(BS module);

        BS build();
    }
}

整个事情生成得很好,但为provideB'生成的代码不能编译:

@Provides
@Singleton
@Inject
public BS provideBS(Provider<BS.Builder> builder) {
    return builder.get().build();
}

但是BSImpl doest没有零参数构造函数,只有:

@Override
public BS provideBS() {
    return new BSImpl();
}

希望我的情况有点清楚,任何帮助都表示赞赏,因为我不知道如何解决这个问题。

解决

我得到了依赖图的错误方法...... A不能直接依赖于BS提供的东西,BS只能依赖于A提供的东西。

1 个答案:

答案 0 :(得分:0)

在评论中解决:

  @DavidRawson最终很简单。我得到了依赖图错误的方式... A不能直接依赖于BS提供的东西,BS只能依赖于A提供的东西。现在唯一剩下的就是找出范围,因为由于A的重复范围,我无法让BS提供单身人士。 - Michel Onstein