【问题标题】:Dagger2 multimodule injection of entity that implements several interfacesDagger2 实体的多模块注入,实现了几个接口
【发布时间】:2020-12-26 11:50:12
【问题描述】:

假设我们的应用程序中有以下模块(箭头表示取决于):

app -> {module1, module2} -> {核心模块}。

我们的模块 1 定义了接口 1,我们的模块 2 定义了接口 2。我们的 app 模块定义并实例化为单例的 Interface1n2Implementation(实现 Interface1 和 Interface2)。

Q.:对于 dagger2 生态系统,如何为 module1 和 module2 提供相同的 Interface1n2Implementation 实例?

【问题讨论】:

    标签: android dagger-2 dagger multi-module


    【解决方案1】:

    您的AppModule 可以创建具有特定作用域的实现(在本例中为@Singleton),并且您可以有 2 个提供返回此实现实例的方法。

    注意:未经测试

    @Module
    object AppModule {
        @Provides
        @Singleton
        internal fun provideImplementation() : Interface1n2Implementation = 
        Interface1n2Implementation()
    
        @Provides
        fun provideInterface1(implementation: Interface1n2Implementation) : Interface1 = implementation
    
        @Provides
        fun provideInterface2(implementation: Interface1n2Implementation) : Interface2 = implementation
    }
    

    【讨论】:

    • 谢谢,测试。不是开箱即用,但我认为这个想法应该存在,让我好好调试一下。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-27
    • 2019-04-09
    • 1970-01-01
    • 2020-05-22
    • 1970-01-01
    相关资源
    最近更新 更多