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

.NET Core 2控制台应用能否自动构建AppConfiguration配置模型?

在.NET Core 2控制台应用中自动构建AppConfiguration实例的方法

当然可以自动构建,但首先得修正你当前JSON配置和C#类之间的不匹配问题,不然绑定会失败。

问题点说明

你的AppConfiguration类里,ActionsSettings是Dictionary<string, ActionsSettings>类型(键值对字典),但你提供的JSON里把它写成了数组[],这两种结构不兼容,得先调整JSON格式。

步骤1:修正JSON配置

把ActionsSettings从数组改成键值对对象,同时注意ConnectionString后面多了个空格,也需要去掉(避免绑定失败):

{ 
    "StateFilesPath": "StateFilesPath...", 
    "ConnectionString": "BIConnectionString...", 
    "ActionsSettings": { 
        "Reg": { 
            "ApiUrl": "ApiUrl...", 
            "TableName": "TableName..." 
        } 
    } 
}

步骤2:在Main函数中绑定配置到AppConfiguration实例

.NET Core提供了ConfigurationBinder来实现自动绑定,有两种常用方式:

方式一:使用Bind方法

先实例化AppConfiguration,再调用Bind方法把配置数据填充进去:

static void Main(string[] args) 
{ 
    var builder = new ConfigurationBuilder() 
        .SetBasePath(Directory.GetCurrentDirectory()) 
        .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true); 
    IConfigurationRoot configuration = builder.Build(); 

    // 初始化配置实例并绑定数据
    var appConfig = new AppConfiguration();
    configuration.Bind(appConfig);

    // 测试使用配置
    Console.WriteLine($"State文件路径:{appConfig.StateFilesPath}");
    Console.WriteLine($"Reg接口地址:{appConfig.ActionsSettings["Reg"].ApiUrl}");
}

方式二:使用Get<T>方法(更简洁)

直接通过Get<AppConfiguration>()获取已经绑定好的实例:

static void Main(string[] args) 
{ 
    var builder = new ConfigurationBuilder() 
        .SetBasePath(Directory.GetCurrentDirectory()) 
        .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true); 
    IConfigurationRoot configuration = builder.Build(); 

    // 直接获取绑定后的配置实例
    var appConfig = configuration.Get<AppConfiguration>();

    // 安全地使用配置(避免空引用)
    if (appConfig != null && appConfig.ActionsSettings?.ContainsKey("Reg") == true)
    {
        Console.WriteLine($"Reg表名:{appConfig.ActionsSettings["Reg"].TableName}");
    }
}

额外注意事项

如果你的控制台应用还没安装Microsoft.Extensions.Configuration.Binder包,需要通过NuGet安装它——这是实现配置绑定的核心包,.NET Core 2控制台项目默认不会自动引用这个包。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:18:39