You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

将Koin迁移至Hilt时如何实现类似Koin的带参数字段注入

Hilt实现带动态参数的字段注入方案

Hilt中对应Koin parametersOf 动态传参注入的功能,是通过*@AssistedInject 辅助注入*实现的,具体步骤如下:

  • 第一步:给需要接收动态参数的类添加@AssistedInject构造注解,动态入参用@Assisted标记
    class Socket @AssistedInject constructor(
        // Hilt自动注入的普通依赖
        private val okHttpClient: OkHttpClient,
        // 外部动态传入的参数,加@Assisted注解
        @Assisted private val roomId: String
    ) {
        // 类内部逻辑
    }
    
  • 第二步:定义@AssistedFactory注解的工厂接口,Hilt会自动生成该接口的实现类
    @AssistedFactory
    interface SocketFactory {
        // 方法参数和构造中@Assisted标记的参数一一对应
        fun create(roomId: String): Socket
    }
    
  • 第三步:在使用侧先注入工厂实例,再调用工厂方法传入动态参数获取目标实例
    @Inject lateinit var socketFactory: SocketFactory
    // 传入动态参数roomId创建Socket实例,和Koin的by inject { parametersOf(roomId) }效果一致
    private val socket: Socket by lazy { socketFactory.create(roomId) }
    

注意:如果有多个动态参数,只需要在构造中给所有动态参数都加@Assisted,同时在工厂的create方法中添加对应参数即可,参数类型和名称需要对应匹配。
补充:如果使用的是2.31及更早版本的Hilt,需要额外引入dagger-hilt-androidx-assisted依赖,更高版本已内置辅助注入功能,无需额外引入。

内容的提问来源于stack exchange,提问作者Mohit Suthar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 07:45:02