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

Autofac中工厂委托参数名为何需与构造函数参数名一致?

Autofac委托工厂参数名匹配问题解析

问题核心原因

Autofac在生成委托工厂的实现逻辑时,会通过参数名称来匹配目标类型构造函数的对应参数,而非仅依赖参数类型判断。

看你的代码细节:

public class ParametersContentVM<T>
{
    // 委托定义的第二个参数名为data
    public delegate ParametersContentVM<T> Factory(IParametersDefinition<T> definition, T data, string projDir);

    // 构造函数对应的参数名为internalData
    public ParametersContentVM(IParametersDefinition<T> definition, T internalData, string projDir)
    {
        // ...
    }
}

委托Factory的第二个参数名data和构造函数的internalData不匹配,Autofac无法将委托调用时传入的参数正确映射到构造函数的对应参数上,因此抛出AutofacException。当你把委托的参数名改为internalData后,参数名称与构造函数完全一致,Autofac就能完成正确的参数绑定,问题自然解决。

官方规则说明

这个参数名匹配的规则是Autofac官方明确规定的:委托工厂的参数必须和目标类型构造函数的参数名称完全匹配。因为构造函数可能存在多个同类型参数,Autofac需要通过参数名称来区分和映射,确保参数传递的准确性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 00:50:44