【问题标题】:How to inject into a Kotlin delegated property with Dagger 2?如何使用 Dagger 2 注入 Kotlin 委托属性?
【发布时间】:2017-07-14 16:48:56
【问题描述】:

我需要将 dagger2 注入 (@Named) 到 kotlin 委托属性中。

//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)

【问题讨论】:

  • 有这方面的消息吗?你找到方法了吗?
  • AFAIK,你不能。

标签: kotlin dagger-2


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-12-22
    • 2019-10-27
    • 1970-01-01
    • 1970-01-01
    • 2018-03-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多