因此,我使用Dagger 2作为Android应用程序,但让我试着解释我的问题,而没有Android术语。匕首2一个控制器,依赖于两个范围内的组件
简而言之,我有一个显示UI的控制器。为了用合适的单位显示适当的值,该控制器需要依赖两个范围内的组件,这是不可能的。
这里是这样:我有
- 一个控制器组件,作用域与@Activity
- One应用Comonent,与@Singleton作用域
- 一个DbComponent - 数据库部件,与作用域@Application,它依赖于ApplicationComponent。
- One PreferencesComponent - 同样是组件,其范围为@Application并依赖于ApplicationComponent。
的ControllerComponent需要靠两个DbComponent,所以我的控制器可以得到具有要显示的数据,并在PreferencesComponent来显示适当的单位(摄氏,华氏,米/秒,公里/小时等等)。
什么是实现我的图形的最佳方式?
我看到的问题,与我相似,但他们并没有帮助 - question 1,question 2
大多数这些 “部件” 的应该是模块。这就是为什么它不起作用。阅读更多:http://stackoverflow.com/questions/40545075/dagger2-and-android/40546157#40546157 – EpicPandaForce
你是否告诉我遵循某种“每个范围的一个组件”模式或其他?我认为这个问题部分是哲学的。为什么(例如)一个DbComponent应该只是一个模块,而像networkcomponent这样的东西应该在一个单独的组件中而不是另一个模块中? – definera
网络组件也是单身作用域,不是吗?那么它应该是一个模块,是单件组件的一部分。如果你看到这个答案,'NetworkingComponent'只是一个普通的'公共接口',其中的提供方法,而不是一个实际的组件。 – EpicPandaForce