如何使用Dagger 2注入Kotlin委托财产?

Zak*_*rdi 5 kotlin dagger-2

我需要@Named使用dagger2 ()注入kotlin委托的属性。

//works great!
@set:Inject var cat: Cat by Ref(ref)

//fails
@set:[Inject Named("dog")] var dog : Animal by Ref(ref)
Run Code Online (Sandbox Code Playgroud)

所以我尝试了

//fails, can't use `@field` with a delegated property
@field:[Inject Named("dog")] var dog : Animal by Ref(ref)

//fails, can't use `lateinit` with a delegated property
@field:[Inject Named("dog")] lateinit var dog : Animal by Ref(ref)
Run Code Online (Sandbox Code Playgroud)

gil*_*dor 0

您不能,因为此类属性没有任何字段,而是委托 get 和 set 调用委托属性对象。dagger 对这个委托一无所知,这只是 2 个方法和一个对象。

我不确定你的情况,但可能你可以用所需的值注入你的委托类实例 Ref ,但我不知道你想做什么,你的委托如何工作以及如何使用 Dagger (什么类型的注入你用吗)