我需要使用 dagger2 将 (@Named
) 注入(inject)到 kotlin 委托(delegate)属性中。
//works great!
@set:Inject var cat: Cat by Ref(ref)
//fails
@set:[Inject Named("dog")] var dog : Animal by Ref(ref)
所以我尝试了
//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)
最佳答案
您不能,因为此类属性没有任何字段,而是委托(delegate)获取和设置对委托(delegate)属性对象的调用。而 dagger 对这个委托(delegate)一无所知,这只是 2 个方法和一个对象。
我不确定你的情况,但可能你可以注入(inject)你的委托(delegate)类实例 Ref 所需的值,但我不知道你想做什么,你的委托(delegate)如何工作以及你如何使用 Dagger(什么类型的注入(inject)你用)
关于kotlin - 如何使用 Dagger 2 注入(inject) Kotlin 委托(delegate)属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42428731/