#android #dagger-2 #dagger #multi-module
#Android #dagger-2 #кинжал #многомодульный
Вопрос:
Допустим, у нас есть следующие модули в нашем приложении (стрелка означает зависит от) :
приложение -> {module1, module2} -> {основной модуль}.
В нашем модуле 1 определен интерфейс1, а в нашем модуле 2 определен Интерфейс2. Наш модуль приложения имеет реализацию interface1n2 (реализует Interface1 и Interface2), определенную и созданную как одноэлементный.
Вопрос: С точки зрения экосистемы dagger2, как предоставить module1 и module2 один и тот же экземпляр Interface1n2Implementation?
Ответ №1:
Вы AppModule
можете создать реализацию с определенной областью действия ( @Singleton
в данном случае), и у вас может быть 2 метода provides, которые возвращают этот экземпляр реализации.
ПРИМЕЧАНИЕ: Непроверенный
@Module
object AppModule {
@Provides
@Singleton
internal fun provideImplementation() : Interface1n2Implementation =
Interface1n2Implementation()
@Provides
fun provideInterface1(implementation: Interface1n2Implementation) : Interface1 = implementation
@Provides
fun provideInterface2(implementation: Interface1n2Implementation) : Interface2 = implementation
}
Комментарии:
1. Спасибо, тестирование. Не работает из коробки, но я думаю, что идея должна жить, позвольте мне просто хорошо ее отладить.