最简单的方式

引用

Microsoft.Extensions.Configuration
Microsoft.Extensions.Configuration.Json

json文件

新建一个ConfigTest.json
右键属性,设置为“始终复制”
数据如下:

{
"TotalCount": 2,
"Students": [
{
"Name": "Lili",
"Sex": "女"
},
{
"Name": "Tom",
"Sex": "男"
}
]
}

读取json

var builder = new ConfigurationBuilder();
builder.AddJsonFile("ConfigTest.json");
var config = builder.Build();
Console.WriteLine(config["TotalCount"]);
//索引
Console.WriteLine(config["Students:0:Name"]);
Console.WriteLine(config["Students:0:Sex"]);
Console.WriteLine(config["Students:1:Name"]);
Console.WriteLine(config["Students:1:Sex"]);

示例代码

https://github.com/zLulus/NotePractice/blob/dev3/Website/DotNetCore/CoreConsole/Config/ConfigReadDemo.cs 的ReadConfig方法

Bind读取配置

引用

第一个示例中的引用也要添加

Microsoft.Extensions.Configuration.Binder

读取json

var builder = new ConfigurationBuilder()
.AddJsonFile("ConfigTest.json");
ConfigTest configTest=new ConfigTest();
var config = builder.Build();
//Microsoft.Extensions.Configuration.Binder
config.Bind(configTest);
Console.WriteLine(configTest.TotalCount);
Console.WriteLine(configTest.Students[0].Name);
Console.WriteLine(configTest.Students[0].Sex);
Console.WriteLine(configTest.Students[1].Name);
Console.WriteLine(configTest.Students[1].Sex);

示例代码

https://github.com/zLulus/NotePractice/blob/dev3/Website/DotNetCore/CoreConsole/Config/ConfigReadDemo.cs 的ReadConfigByBind方法

Option

引用

第一个示例中的引用也要添加

Microsoft.Extensions.Options

在appsettings.json中添加测试数据

{
"MyData": {
"TotalCount": 2,
"Students": [
{
"Name": "Lili",
"Sex": "女"
},
{
"Name": "Tom",
"Sex": "男"
}
]
}
}

实体类需要实现IOptions<T>

public class ConfigTest:IOptions<ConfigTest>
{
public int TotalCount { get; set; }
public List<Student> Students { get; set; }
public ConfigTest Value => this;
}

读取json

public class ConfigController : Controller
{
private ConfigTest _configTestByOptions;
private readonly IConfiguration _configuration;
public ConfigController(IConfiguration configuration)
{
_configuration = configuration;
}
public IActionResult Index()
{
//GetSection:必须先读节点
//ConfigTest实现接口IOptions<ConfigTest>
_configTestByOptions = _configuration.GetSection("MyData").Get<ConfigTest>();
return View();
}
}

注意

CreateDefaultBuilder方法已经读取appsettings.json,所以在这个示例中,我们没有调用AddJsonFile方法添加appsettings.json文件,而是直接读取appsettings.json中的数据即可

public static IWebHost BuildWebHost(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>()
.Build();

示例代码

https://github.com/zLulus/NotePractice/blob/dev3/Website/DotNetCore/CoreWebsite/Controllers/ConfigController.cs

热更新

定义

optional:该配置文件是否可选,如果optional=false,加载失败会抛出异常
reloadOnChange:文件被修改时是否重新加载,热更新就是这个,设置为true即可

public static IConfigurationBuilder AddJsonFile(this IConfigurationBuilder builder, string path, bool optional, bool reloadOnChange)

注意,热更新是修改bin目录下的生成的文件

示例代码

https://github.com/zLulus/NotePractice/blob/dev3/Website/DotNetCore/CoreConsole/Config/ConfigReadDemo.cs 的ReadConfigHotUpdate方法

最新文章

  1. MessageBox.Show()的各种用法
  2. 【Android】1.开发环境搭建
  3. 在编译向该请求提供服务所需资源的过程中出现错误。请检查下列特定错误详细信息并适当地修改源代码。 编译器错误消息: CS0016: 未能写入输出文件“c:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files\root\41c191fd\ff9345c5\App_Web_login.cshtml.65793277
  4. Twitter API升级至1.1
  5. GitBook – 使用 GitHub 和 Markdown 制作书籍
  6. sphinx 全配置
  7. 笔记本显示器坏了,从硬盘安装win7系统
  8. Javascript注意事项一【防止浮点数溢出】
  9. yii2源码学习笔记(二十)
  10. 今天,安装了一个GANGLIA玩玩,以后再测试NAGIOS吧。
  11. Effective Java实作Comparable - 就是爱Java
  12. 力挺8天入门wpf【转载】
  13. 国内下载比较快的Maven仓库镜像
  14. [redis] &lt;&lt;The little Redis book&gt;&gt;的读书笔记
  15. PowerShell 使用.NetFramework
  16. 【WPF】点击滑动条(Slider),移动滑块(Tick)到鼠标点击的位置
  17. MySQL--4操作数据表中的记录小结
  18. kombu源码Producer收获一
  19. ML基础 : 训练集,验证集,测试集关系及划分 Relation and Devision among training set, validation set and testing set
  20. NSIS 资料

热门文章

  1. 【34.88%】【codeforces 569C】Primes or Palindromes?
  2. tomcat 启动项目时出现 ZipException: error in opening zip file
  3. [SCSS] Use Standard Built-in SCSS Functions for Common Operations
  4. 指针知识梳理6-const与指针
  5. 手把手教你完成App支付JAVA后台-支付宝支付JAVA
  6. php标准库中的优先队列SplPriorityQueue怎么使用?(继承)
  7. Ajax详解及使用Ajax时的返回值类型有哪些?
  8. 雷观(十):管理自己的任务列表(TodoList)很重要
  9. zookeeper 分布式安装/配置/启动
  10. JAVA SE回顾及思考(1)——面向对象的特点