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

ASP.NET Core 7 Web API类如何通过依赖注入访问配置解决CS0103错误

在ASP.NET Core 7中让Core类通过依赖注入访问配置

先解决你遇到的CS0103错误:你直接在Core类里引用Configuration但它既不是该类的成员,也没有通过依赖注入获取,所以即使引入了命名空间也没用——Configuration是需要注入的实例,不是静态可直接调用的对象。下面是无需显式传参的解决方案:

方案一:使用强类型配置(推荐,类型安全)

1. 创建配置模型类

定义一个和配置节点对应的类,用来绑定连接字符串:

public class DatabaseSettings
{
    public string ConnectionString { get; set; } = string.Empty;
}

2. 在Program.cs中绑定配置并注册服务

将配置文件中的节点绑定到模型,并注入到容器:

// 假设你appsettings.json里的节点是"Database:ConnectionString"
builder.Services.Configure<DatabaseSettings>(builder.Configuration.GetSection("Database"));
// 同时注册Core类到容器(根据业务需求选Scoped/Singleton/Transient)
builder.Services.AddScoped<Core>();

3. 在Core类中通过构造函数注入

修改Core类的构造函数,接收IOptions<DatabaseSettings>实例:

public class Core
{
    private readonly DatabaseSettings _dbSettings;

    public Core(IOptions<DatabaseSettings> dbSettings)
    {
        _dbSettings = dbSettings.Value;
    }

    public void GetMenu()
    {
        // 直接使用绑定好的连接字符串
        string connStr = _dbSettings.ConnectionString;
        // 你的数据库操作逻辑
    }
}

方案二:直接注入IConfiguration(快速实现,适合简单场景)

1. 在Program.cs中注册Core类

框架默认已经注册了IConfiguration,你只需要注册Core类即可:

builder.Services.AddScoped<Core>();

2. 在Core类中注入IConfiguration

public class Core
{
    private readonly IConfiguration _config;

    public Core(IConfiguration config)
    {
        _config = config;
    }

    public void GetMenu()
    {
        // 读取连接字符串
        string connStr = _config.GetConnectionString("DefaultConnection");
        // 你的逻辑代码
    }
}

注意事项

  • 无论哪种方案,都需要确保Core类已经被注册到依赖注入容器,否则无法自动注入依赖
  • 强类型配置更适合复杂的配置结构,能避免硬编码配置键,减少出错概率

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 16:19:57