Dagger 2 绑定委托与子组件

Bil*_*lda 4 android dependency-injection mvvm dagger-2

我在设计我的应用程序的 DI 架构时遇到了一些问题。我正在使用架构组件 ViewModels,我的灵感来自如何通过 Dagger 在他们自己的 GitHub存储库中提供 ViewModels .. 我想创建范围组件/模块,例如产品细节,将提供 ViewModels/Repositories 和其他依赖于该单个产品的东西.. 问题是所有 ViewModel 都是从给定示例中的相同 ViewModelModule 提供的。但是 ProductViewModel 需要从作用域子组件 ProductModule 提供的 ProductRepository。显然这是不可能的,因为 Dagger 在构建时抛出错误,我需要为 ProductRepository 提供 @Provides 注释。

好的,所以我认为我会在我的 ProductModule 中提供 ProductViewModel 但是它在运行时崩溃了,因为在这个方法中找不到我的 ViewModel 的提供者

是否有可能拥有这种架构,或者我是否需要重新设计它以在他们的示例中不使用与谷歌相同的方法?

Gra*_*and 6

通过删除子类@Singleton上的注释,我能够解决类似的问题ViewModelProvider.Factory

工厂是否是单身人士并不重要;这只是一个性能问题,真的。我最终@Reusable改为使用,它告诉 Dagger,如果需要,可以安全地重用工厂实例,但没有特定范围的限制。