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

为什么Unity依赖注入解析时不识别构造函数的可选参数?

问题根本原因

该报错是4.x及更早版本Unity容器的已知缺陷:旧版本Unity不会自动读取构造函数的可选参数默认值,解析服务时会尝试从容器中构造所有参数类型的实例,而bool等基础值类型没有公共无参构造函数,因此抛出对应异常。同一仓库最新分支无报错,就是因为其引用的Unity包版本已修复该问题。

更优解决方案

你当前新增带特性无参构造的方案虽然可以解决问题,但会导致业务类与Unity框架耦合,还额外增加了冗余代码,更推荐以下两种方案:

  • 方案1:注册时显式传入构造参数默认值(适配旧版本Unity,无业务代码侵入)
    注册类型时通过InjectionConstructor显式指定构造函数的参数值,无需修改SignalTranslator类的代码:
    Container.RegisterType(typeof(ITranslator), typeof(SignalTranslator), 
      new InjectionConstructor(false, false, 2));
    
  • 方案2:升级Unity包版本(最彻底的方案)
    直接将当前分支的Unity NuGet包升级到5.0及以上版本,高版本Unity已原生支持构造函数可选参数默认值的自动识别,无需任何额外配置即可正常解析原始构造函数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 22:54:04