.Net Core 读取配置文件
1..Net Core ActionFilter2..Net Core ResourceFilter3..Net Core Jwt鉴权授权4..Net Core Mvc Razor 组件5..Net Core Autofac6..Net Core ActionFilter7..Net Core ExceptionFilter8..Net Core AlwaysRunResultFilter9..Net Core EntityFrameCore
10..Net Core 读取配置文件
11..Net Core NLog+oracel12..Net Core MiddleWare13..Net Core WebApi14..Net Core gRpc调用目录
appsetting.json
- 用于测试appsetting.json
{
"Name": "刘德华",
"Teacher": {
"Name": "张无忌",
"Age": "125"
},
"ReadConfigArray": [
"ReadConfigArray_1",
"ReadConfigArray_2",
"ReadConfigArray_3"
],
"TestObject": {
"Name": "刘德华",
"Teacher": {
"Name": "张无忌",
"Age": "125"
},
"ReadConfigArray": [
"ReadConfigArray_1",
"ReadConfigArray_2",
"ReadConfigArray_3"
]
}
}
IConfiguration 读取
- 直接构造函数注入
Console.WriteLine("name: "+_configuration["Name"]);
Console.WriteLine("Teacher:Name " + _configuration["Teacher:Name"]);
Console.WriteLine("Teacher:Age " + _configuration["Teacher:Age"]);
Console.WriteLine("ReadConfigArray:0 " + _configuration["ReadConfigArray:0"]);
Console.WriteLine("ReadConfigArray:1 " + _configuration["ReadConfigArray:1"]);
Console.WriteLine("ReadConfigArray:2 " + _configuration["ReadConfigArray:2"]);
IConfiguration Bind 读取
- 使用Bind方法与对象绑定,然后操作对象即可,
- 注意: 对象属性与配置文件节点相同
using NuGet.DependencyResolver;
namespace Entity
{
public class ConfigTestObject
{
public string? Name { get; set; }
public ConfigTestObjectTeacher? Teacher { get; set; }
public List<string>? ReadConfigArray { get;set; }
}
public class ConfigTestObjectTeacher
{
public string? Name { get; set; }
public int Age { get; set; }
}
}
ConfigTestObject configTestObject = new ConfigTestObject();
_configuration.Bind("TestObject", configTestObject);
Console.WriteLine("name: " + configTestObject.Name);
Console.WriteLine("Teacher:Name " + configTestObject.Teacher?.Name);
Console.WriteLine("Teacher:Age " + configTestObject.Teacher?.Age);
Console.WriteLine("ReadConfigArray:0 " + configTestObject.ReadConfigArray?[0]);
Console.WriteLine("ReadConfigArray:1 " + configTestObject.ReadConfigArray?[1]);
Console.WriteLine("ReadConfigArray:2 " + configTestObject.ReadConfigArray?[2]);
IOptionsMonitor 读取
- Program.cs 读取要读取的节点
- 然后在使用的地方构造函数注入IOptionsMonitor 进来使用
- configTestObject.CurrentValue 取出对象
Program.cs
builder.Services.Configure<ConfigTestObject>(builder.Configuration.GetSection("TestObject"));
构造注入
ConfigTestObject _configTestObject1;
public TestIConfigurationController(IOptionsMonitor<ConfigTestObject> configTestObject)
{
_configTestObject1 = configTestObject.CurrentValue;
}
使用
Console.WriteLine("TestIOptionsMonitor...");
Console.WriteLine("name: " + _configTestObject1.Name);
Console.WriteLine("Teacher:Name " + _configTestObject1.Teacher?.Name);
Console.WriteLine("Teacher:Age " + _configTestObject1.Teacher?.Age);
Console.WriteLine("ReadConfigArray:0 " + _configTestObject1.ReadConfigArray?[0]);
Console.WriteLine("ReadConfigArray:1 " + _configTestObject1.ReadConfigArray?[1]);
Console.WriteLine("ReadConfigArray:2 " + _configTestObject1.ReadConfigArray?[2]);
IOptions 读取
- Program.cs 读取要读取的节点
- 然后在使用的地方构造函数注入IOptionsMonitor 进来使用
- configTestObject.CurrentValue 取出对象
Program.cs
builder.Services.Configure<ConfigTestObject>(builder.Configuration.GetSection("TestObject"));
构造注入
ConfigTestObject _configTestObject1;
public TestIConfigurationController(IOptions<ConfigTestObject> configTestObject)
{
_configTestObject1 = configTestObject.Value;
}
使用
Console.WriteLine("TestIOptionsMonitor...");
Console.WriteLine("name: " + _configTestObject1.Name);
Console.WriteLine("Teacher:Name " + _configTestObject1.Teacher?.Name);
Console.WriteLine("Teacher:Age " + _configTestObject1.Teacher?.Age);
Console.WriteLine("ReadConfigArray:0 " + _configTestObject1.ReadConfigArray?[0]);
Console.WriteLine("ReadConfigArray:1 " + _configTestObject1.ReadConfigArray?[1]);
Console.WriteLine("ReadConfigArray:2 " + _configTestObject1.ReadConfigArray?[2]);
合集:
C#
分类:
DotNetCore
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?