Я пытаюсь добавить мультисвязывание к моим подкомпонентам фрагмента, но у меня проблема с kotlin и дженериками. В основном у меня есть 2 интерфейса,
Один для модулей:
@Module
interface SbModule
И один для подкомпонентов
interface SbSubcomponent
Тогда у меня есть субкомпонентный строитель
interface SbBuilder<in A, out B> {
fun module(module: A)
fun build(): B
}
Мой подкомпонент фрагмента расширяется SbSubcomponent
, а его модуль расширяется SbModule
, очевидно. тогда у меня есть строитель как:
@dagger.Subcomponent.Builder
interface Builder: SbBuilder<Module, Subcomponent> {}
И проблема начинается в действии, давайте опускаем привязку карты, чтобы сделать проблему более ясной, я подвожу свой Subcomponent.Builder
к SbBuilder
, но мне нужно точно указать типы, так как:
@Binds
abstract fun fragmentBuilder(impl: Fragment.Subcomponent.Builder): SbBuilder<Fragment.Subcomponent.Module, Fragment.Subcomponent>
Если я попробую с дженериками, то SbModule
и SbSubcomponent
тогда я получаю
@Binds methods must have only one parameter whose type is assignable to the return type
И после того, как я точно укажу типы, я не могу ввести их как общие ... однако я могу привести их к общим после инъекции, и это хорошо, но это не главное, я также возился с @JvmSuppressWildcards
, но нет Неважно, куда я их положу, всегда есть проблема. Должно быть, я что-то пропустил, но в настоящее время я понятия не имею, что