翼度科技»论坛 编程开发 .net 查看内容

.Net Core 读取配置文件

11

主题

11

帖子

33

积分

新手上路

Rank: 1

积分
33

目录

appsetting.json


  • 用于测试appsetting.json
  1. {
  2.   "Name": "刘德华",
  3.   "Teacher": {
  4.     "Name": "张无忌",
  5.     "Age": "125"
  6.   },
  7.   "ReadConfigArray": [
  8.     "ReadConfigArray_1",
  9.     "ReadConfigArray_2",
  10.     "ReadConfigArray_3"
  11.   ],
  12.   "TestObject": {
  13.     "Name": "刘德华",
  14.     "Teacher": {
  15.       "Name": "张无忌",
  16.       "Age": "125"
  17.     },
  18.     "ReadConfigArray": [
  19.       "ReadConfigArray_1",
  20.       "ReadConfigArray_2",
  21.       "ReadConfigArray_3"
  22.     ]
  23.   }
  24. }
复制代码
IConfiguration 读取


  • 直接构造函数注入
  1. Console.WriteLine("name: "+_configuration["Name"]);
  2. Console.WriteLine("Teacher:Name " + _configuration["Teacher:Name"]);
  3. Console.WriteLine("Teacher:Age " + _configuration["Teacher:Age"]);
  4. Console.WriteLine("ReadConfigArray:0 " + _configuration["ReadConfigArray:0"]);
  5. Console.WriteLine("ReadConfigArray:1 " + _configuration["ReadConfigArray:1"]);
  6. Console.WriteLine("ReadConfigArray:2 " + _configuration["ReadConfigArray:2"]);
复制代码
IConfiguration Bind 读取


  • 使用Bind方法与对象绑定,然后操作对象即可,


  • 注意: 对象属性与配置文件节点相同
  1. using NuGet.DependencyResolver;
  2. namespace Entity
  3. {
  4.     public class ConfigTestObject
  5.     {
  6.         public string? Name { get; set; }
  7.         public ConfigTestObjectTeacher? Teacher { get; set; }
  8.         public List<string>? ReadConfigArray { get;set; }
  9.     }
  10.     public class ConfigTestObjectTeacher
  11.     {
  12.         public string? Name { get; set; }
  13.         public int Age { get; set; }
  14.     }
  15. }
复制代码
  1. ConfigTestObject configTestObject = new ConfigTestObject();
  2. _configuration.Bind("TestObject", configTestObject);
  3. Console.WriteLine("name: " + configTestObject.Name);
  4. Console.WriteLine("Teacher:Name " + configTestObject.Teacher?.Name);
  5. Console.WriteLine("Teacher:Age " + configTestObject.Teacher?.Age);
  6. Console.WriteLine("ReadConfigArray:0 " + configTestObject.ReadConfigArray?[0]);
  7. Console.WriteLine("ReadConfigArray:1 " + configTestObject.ReadConfigArray?[1]);
  8. Console.WriteLine("ReadConfigArray:2 " + configTestObject.ReadConfigArray?[2]);
复制代码
IOptionsMonitor 读取


  • Program.cs 读取要读取的节点
  • 然后在使用的地方构造函数注入IOptionsMonitor 进来使用
  • configTestObject.CurrentValue 取出对象
Program.cs
  1. builder.Services.Configure<ConfigTestObject>(builder.Configuration.GetSection("TestObject"));
复制代码
构造注入
  1. ConfigTestObject _configTestObject1;
  2. public TestIConfigurationController(IOptionsMonitor<ConfigTestObject> configTestObject)
  3. {
  4.     _configTestObject1 = configTestObject.CurrentValue;
  5. }
复制代码
使用
  1. Console.WriteLine("TestIOptionsMonitor...");
  2. Console.WriteLine("name: " + _configTestObject1.Name);
  3. Console.WriteLine("Teacher:Name " + _configTestObject1.Teacher?.Name);
  4. Console.WriteLine("Teacher:Age " + _configTestObject1.Teacher?.Age);
  5. Console.WriteLine("ReadConfigArray:0 " + _configTestObject1.ReadConfigArray?[0]);
  6. Console.WriteLine("ReadConfigArray:1 " + _configTestObject1.ReadConfigArray?[1]);
  7. Console.WriteLine("ReadConfigArray:2 " + _configTestObject1.ReadConfigArray?[2]);
复制代码
IOptions 读取


  • Program.cs 读取要读取的节点
  • 然后在使用的地方构造函数注入IOptionsMonitor 进来使用
  • configTestObject.CurrentValue 取出对象
Program.cs
  1. builder.Services.Configure<ConfigTestObject>(builder.Configuration.GetSection("TestObject"));
复制代码
构造注入
  1. ConfigTestObject _configTestObject1;
  2. public TestIConfigurationController(IOptions<ConfigTestObject> configTestObject)
  3. {
  4.     _configTestObject1 = configTestObject.Value;
  5. }
复制代码
使用
  1. Console.WriteLine("TestIOptionsMonitor...");
  2. Console.WriteLine("name: " + _configTestObject1.Name);
  3. Console.WriteLine("Teacher:Name " + _configTestObject1.Teacher?.Name);
  4. Console.WriteLine("Teacher:Age " + _configTestObject1.Teacher?.Age);
  5. Console.WriteLine("ReadConfigArray:0 " + _configTestObject1.ReadConfigArray?[0]);
  6. Console.WriteLine("ReadConfigArray:1 " + _configTestObject1.ReadConfigArray?[1]);
  7. Console.WriteLine("ReadConfigArray:2 " + _configTestObject1.ReadConfigArray?[2]);
复制代码
来源:https://www.cnblogs.com/qfccc/archive/2023/07/19/17566765.html
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

举报 回复 使用道具