я создаю высокомодульное приложение, у меня есть много предложений, которые нужно вставить, все они являются дочерними (не прямыми) одного и того же класса, ни у одного из них нет параметров конструктора.
Я хочу избежать создания метода @Provides для каждого из них в моем модуле.
Есть ли способ сказать кинжалу, чтобы он автоматически предоставлял все классы, которые реализуют базовый интерфейс?Или это возможно сделать самому, используя отражение?
Я использую dagger-android с kotlin
Обновление : Я опубликую некоторый код для иллюстрации
В одном из модулей у меня есть этот интерфейс
interface ExampleClass: BaseExample {
fun doSomething()
}
}
Затем в основном приложении я реализую его
class ExampleClassImpl @Inject constructor() : ExampleClass {
override fun doSomething(){
}
}
Класс, в котором я нуждаюсь, это Viewmodel, созданный с помощью кинжала, так что инъекция работаетна конструкторе.
class ExampleViewModel @Inject constructor(val exmpl :ExampleClass) : BaseViewModel {
}
Я хочу внедрить этот ExampleClassImpl, для этого мне нужно создать модуль @ с методом, аннотированным @Provides или @Bind, и вернуть этот класс.
Без провайдера я получаю ошибку во время компиляции:
ошибка: [Dagger / MissingBinding] com.myapp.ExampleClassImpl не может быть предоставлен без аннотированного @ Provides метода.