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

.NET Framework4.8中Unity容器注册字典报错:未找到匹配成员

问题排查与解决

1. 修复拼写错误

你的代码中存在一个明显的低级拼写错误:第二个连接字符串获取时,Configurationmanager应为ConfigurationManager(注意M大写),这会导致无法正确读取连接字符串,进而触发后续的参数异常。修正后的字典初始化代码:

var connectionDict = new Dictionary<DatabaseConnectionName, string>
{
    { DatabaseConnectionName.Connection1, ConfigurationManager.ConnectionStrings["Connection1"].ConnectionString },
    { DatabaseConnectionName.Connection2, ConfigurationManager.ConnectionStrings["Connection2"].ConnectionString }
};

2. 修正Unity字典注册方式

Unity中注册已手动实例化的字典,不应使用RegisterType+InjectionConstructor组合,而应该用RegisterInstance直接注册字典实例。RegisterType用于注册类型并让Unity负责创建实例,而你已经提前创建好了字典对象,直接注册实例即可:

// 替换原来的RegisterType为RegisterInstance
container.RegisterInstance<IDictionary<DatabaseConnectionName, string>>(connectionDict);
container.RegisterType<IDbConnectionFactory, DapperDbConnectionFactory>();

3. 额外验证点

  • 确认DatabaseConnectionName枚举定义正确,Connection1、Connection2是有效的枚举成员;
  • 确认App.config/Web.config中存在名称匹配的连接字符串配置,格式示例:
<connectionStrings>
  <add name="Connection1" connectionString="你的数据库连接字符串" providerName="System.Data.SqlClient" />
  <add name="Connection2" connectionString="你的数据库连接字符串" providerName="System.Data.SqlClient" />
</connectionStrings>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 03:16:02