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

.Net Core 2中如何在常量类中读取配置值?

在.NET Core 2控制台应用中通过全局类访问appsettings.json配置

我懂你想要的效果——不想每次都在Program.cs里读配置,而是能在项目的任何类里通过一个全局的“常量类”轻松访问appsettings.json里的配置项。针对.NET Core 2控制台应用,我给你整理了一套落地的方案:

步骤1:确保appsettings.json能被程序读取到

控制台应用默认不会自动把appsettings.json复制到输出目录,所以得先设置文件属性:

  • 右键项目里的appsettings.json文件
  • 选择“属性”
  • 在“复制到输出目录”下拉框中,选择**“如果较新则复制”或“始终复制”**

步骤2:添加必要的NuGet包

要加载JSON配置文件,需要安装Microsoft.Extensions.Configuration.Json包:

  • 使用Package Manager Console:
    Install-Package Microsoft.Extensions.Configuration.Json
    
  • 或者使用.NET CLI:
    dotnet add package Microsoft.Extensions.Configuration.Json
    

步骤3:创建全局配置静态类

这个类就是你要的“全局常量文件”,我们可以把它设计成静态类,既可以直接持有配置实例,也可以把常用配置项封装成静态属性(更像常量的用法):

using Microsoft.Extensions.Configuration;

namespace YourConsoleAppNamespace
{
    public static class AppSettings
    {
        // 持有完整的配置实例,方便灵活读取任意配置项
        public static IConfigurationRoot Configuration { get; set; }

        // 封装常用配置项,直接通过属性访问,无需每次写配置路径
        public static string ApiBaseUrl 
        { 
            get => Configuration.GetValue<string>("ApiSettings:BaseUrl", "https://default-api.com"); 
        }

        public static int MaxRetryCount 
        { 
            get => Configuration.GetValue<int>("RetrySettings:MaxCount", 3); 
        }
    }
}

说明: 用GetValue<T>方法可以指定默认值,避免配置项缺失时抛出异常,更健壮。

步骤4:在Program.cs中初始化全局配置

在程序启动时加载配置,并把配置实例赋值给全局类的属性:

using Microsoft.Extensions.Configuration;
using System.IO;
using System;

namespace YourConsoleAppNamespace
{
    class Program
    {
        static void Main(string[] args)
        {
            // 构建配置对象
            var configBuilder = new ConfigurationBuilder()
                .SetBasePath(Directory.GetCurrentDirectory()) // 设置配置文件所在目录
                .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true); // 加载JSON配置

            // 初始化全局配置类
            AppSettings.Configuration = configBuilder.Build();

            // 测试访问配置
            Console.WriteLine($"当前API地址:{AppSettings.ApiBaseUrl}");
            Console.WriteLine($"最大重试次数:{AppSettings.MaxRetryCount}");

            // 在其他类中使用全局配置
            var businessService = new BusinessService();
            businessService.Execute();
        }
    }
}

步骤5:在任意类中使用全局配置

现在你可以在项目的任何类里直接访问AppSettings的属性,无需再重复加载配置:

public class BusinessService
{
    public void Execute()
    {
        // 直接调用全局配置
        var retryCount = AppSettings.MaxRetryCount;
        Console.WriteLine($"业务逻辑将使用 {retryCount} 次重试机制");
    }
}

额外小提示

如果你的配置项比较复杂,也可以用强类型绑定(比如创建一个ApiSettings类,然后用ConfigurationBinder.Bind方法映射),不过静态类的方式对于简单场景来说更直接,符合你“全局常量文件”的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 07:53:16