.NET 4.6.1迁移至.NET 6 API:无参数读取配置的方法
从.NET 4.6.1迁移到.NET 6 API:静态方法读取配置的改造方案
背景
从.NET 4.6.1迁移至.NET 6 API时,原有代码大量依赖ConfigurationManager.AppSettings["something"].ToString()读取App.config配置。现在.NET 6采用appsettings.json配合依赖注入读取配置,但希望保留MyClass.GetConfigVal()这类静态调用方式,无需传递依赖注入的配置参数。
改造步骤
1. 在Program.cs中初始化全局配置实例
在.NET 6的顶级语句Program.cs中,完成配置绑定后,将IConfiguration实例赋值给静态类的静态属性:
var builder = WebApplication.CreateBuilder(args); // 绑定appsettings.json中的Configs节点到强类型类(可选) builder.Services.Configure<Configs>(builder.Configuration.GetSection("Configs")); // 将IConfiguration实例赋值给MyClass的静态属性 MyClass.Configuration = builder.Configuration; var app = builder.Build(); // 后续中间件、路由等配置...
2. 定义强类型配置类(可选)
如果偏好强类型读取,先定义对应appsettings.json结构的配置类:
public class Configs { // 对应appsettings.json中Configs节点下的Something字段 public string Something { get; set; } }
3. 修改MyClass的静态方法
更新静态类,通过静态存储的IConfiguration实例读取配置:
public class MyClass { // 静态字段存储全局IConfiguration实例 public static IConfiguration Configuration { get; set; } public static string GetConfigVal() { // 方式1:直接通过配置路径读取 return Configuration["Configs:Something"]; // 方式2:使用强类型配置类(需先在Program.cs中完成绑定) // var configs = Configuration.Get<Configs>(); // return configs.Something; } }
说明
- 静态属性
Configuration会在应用启动时完成初始化,确保静态方法调用时已能正常读取配置。 - 两种读取方式可按需选择:直接路径读取更灵活,强类型读取则能避免字符串路径拼写错误,类型安全性更高。
内容的提问来源于stack exchange,提问作者Tomas Kanok
相关产品推荐
相关产品推荐

