1
的Dagger documentation頁說:當你從Dagger的另一個模塊中「包含」一個模塊時會發生什麼?
爲了獲得最大的編譯時間驗證,創建一個包含所有的應用程序的模塊的模塊。
此留下一些待解決的問題:
- 什麼其實是包括其他模塊的影響? (至少,似乎包含的模塊不需要直接實例化)
- 合法/可能通過不同模塊多次包含一個模塊?那麼會發生什麼?
的Dagger documentation頁說:當你從Dagger的另一個模塊中「包含」一個模塊時會發生什麼?
爲了獲得最大的編譯時間驗證,創建一個包含所有的應用程序的模塊的模塊。
此留下一些待解決的問題:
該文檔需要改進。
包含是一個文字包含 - 所有包含模塊的@Provides方法,完全傳遞,被收集在一起並被視爲(實際上)被分析模塊的一部分。所以:
@Module(includes = BModule.class)
class AModule {
@Provides A provideA(...) { ... }
}
@Module
class BModule {
@Provides B provideB(...) { ... }
}
在功能上等同
@Module
class JointModule {
@Provides A provideA(...) { ... }
@Provides B provideB(...) { ... }
}
此外,模塊包含摺疊重複。所以,如果您有:
@Module(includes = {BModule.class, CModule.class})
class AModule { ... }
@Module(includes = CModule.class)
class BModule { ... }
@Module
class CModule { ... }
將導致綁定的集合,從AModule
+ BModule
+ CModule
(刪除重複數據)。