2017-08-01 34 views
0

產生我有抽象FirstClass,和他的子類SecondClass 在第二類我有匕首注入:排除dagger2類從APK

component.inject(this); 

_MembersInjector生成此兩類 - FirstClass_MembersInjectorSecondClass_MembersInjector

,如何排除FirstClass_MembersInjector從我的體型?

+1

爲什麼你需要嗎?你的用例是什麼? – azizbekian

+0

我簡化我的例子,但一切看起來是這樣的:我有核心庫,它使用核心的lib,以及使用該庫和核心大項目,雙組分庫。 Dagger在兩個庫中爲核心類生成MembersInjector,並在主項目中給出重複的條目異常@azizbekian – winston

+0

您可以刪除或合併您的舊類似(重複)問題 - https://stackoverflow.com/q/45416388/5241933 –

回答

0

假設你有類似:

class FirstClass { 

    @Inject Integer firstClassField; 

} 

然後:

class SecondClass extends FirstClass { 

    @Inject String secondClassField; 

    void injectMembers() { 
     DaggerComponent.builder().build().inject(this); 
    } 
} 

匕首2生成部件噴射器與用於屬性注射@Inject註釋的字段即,候選的所有類。這是無論你實際上是要求注射該類地方在你的代碼或沒有。

在上面的人爲的例子,即使它不是在生成的匕首組件中使用的FirstClass_MembersInjector將會產生。

你的問題的解決方案可能在於更好地組織你的項目,而不是試圖配置異常行爲的匕首2

+0

這幾乎就像我的情況,但有一點不同。在我的情況存在'FirstClass'和'SecondClass'之間的繼承層次結構另外一個類沒有任何注射成員。我會叫它'FirstAndHalfClass'。而對於這個班級,我不希望有一個'_MembersInjector' – winston

+0

@winston我不認爲阻止'_MembersInjector'的生成是對這個問題的答案 - 聽起來好像嘗試重構和重命名感謝大衛,謝謝大家, –

+0

。但我會嘗試第一個變種) – winston