我有抽象的FirstClass
和他的孩子班SecondClass
在第二节课中,我有匕首注射:
component.inject(this);
但_MembersInjector
生成了这两个类 - FirstClass_MembersInjector
和SecondClass_MembersInjector
如何从构建中排除FirstClass_MembersInjector
?
答案 0 :(得分:0)
假设你有类似的东西:
class FirstClass {
@Inject Integer firstClassField;
}
然后:
class SecondClass extends FirstClass {
@Inject String secondClassField;
void injectMembers() {
DaggerComponent.builder().build().inject(this);
}
}
Dagger 2为所有具有@Inject
注释字段的类生成成员注入器,即属性注入的候选者。无论您是否实际在代码中的某个位置请求注入该类,都是如此。
在上面的设计示例中,即使未在生成的Dagger组件中使用FirstClass_MembersInjector
,也会生成A(const A& op, int a_) :
prop_a(op.prop_a_),
prop_b(op.prop_b_),
// continue for all members ...
a(a_) // except a
{
}
。
解决问题的方法可能在于更好地组织项目,而不是尝试为Dagger 2配置异常行为。