2

假设我有一个名为 interfaceA 的接口

interface InterfaceA {}

这是Assisted注入的具体实现

class ImplClass @AssistedInject constructor(@Assisted someClass:SomeCLass):InterfaceA {
}

在这种情况下,您将如何使用AssistedInject,其中 dagger 还需要将具体类与接口绑定。

下面是正确的方法吗?或者我错过了什么?

class ImplClass @AssistedInject constructor(@Assisted someClass:SomeCLass):InterfaceA {

    @AssistedFactory
    interface DaggerFactory : Factory {
      override fun create(someClass:SomeCLass): ImplClass
    }

    interface Factory {
     fun create(someClass:SomeCLass): InterfaceA
    }              
}

然后,像这样绑定它

@Module
@InstallIn(ActivityComponent::class)
interface BindsSomething {
  @Binds
  fun binds(factory: ImplClass.DaggerFactory): ImplClass.Factory
}

上述方法虽然有效,但我想知道是否有更好的方法或不同的方法,样板更少,我不知道。

4

0 回答 0