知行合一|

hiwwwk

园龄:5年1个月粉丝:4关注:12

2022-02-08 23:51阅读: 73评论: 0推荐: 0

11 | 文件配置提供程序:自由选择配置的格式

文件配置提供程序

  • Microsoft.Extensions.Configuration.Ini
  • Microsoft.Extensions.Configuration.Json
  • Microsoft.Extensions.Configuration.NewtonsoftJson
  • Microsoft.Extensions.Configuration.Xml
  • Microsoft.Extensions.Configuration.UserSecrets

特性

  • 指定文件是否可选、必选
  • 指定是否监视文件的变更,也就意味着如果文件变更我们是可以知道的

示例

新建控制台应用程序👉添加包
image.png
添加一个appsetting.json文件在项目中
image.pngimage.png
将json文件设置为:右键👉属性👉复制到输出目录:始终复制

using Microsoft.Extensions.Configuration;
using System;

namespace ConfigurationFileDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            var builder = new ConfigurationBuilder();
            var root = builder.AddJsonFile("appsettings.json").Build();
            Console.WriteLine($"Key1 : {root["key1"]}");
            Console.WriteLine($"Key2 : {root["key2"]}");
        }
    }
}

输出:image.png

AddJsonFile()方法由其它两个参数,optionalreloadOnChange
optional参数默认是false,功能是当文件不存在时是否报错。
reloadOnChange****参数默认是true,功能是每次我们文件变更了,它会去读取我们新的文件。

这里,我们
将代码修改为:

using Microsoft.Extensions.Configuration;
using System;

namespace ConfigurationFileDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            var builder = new ConfigurationBuilder();
            var root = builder.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true).Build();
            Console.WriteLine($"Key1 : {root["key1"]}");
            Console.WriteLine($"Key2 : {root["key2"]}");
            Console.ReadKey(); 
            Console.WriteLine($"Key1 : {root["key1"]}");
            Console.WriteLine($"Key2 : {root["key2"]}");
            Console.ReadKey();
        }
    }
}

然后运行,代码会在ReadKey()处停住,之后我们去修改Json文件,将Key1Value1修改为NewValue1,然后保存。
image.png
输出:image.png

然后我们再看一看ini文件的操作
首先创建一个appsetting.ini操作同上 ,输入内容:
image.png
将代码修改为

using Microsoft.Extensions.Configuration;
using System;

namespace ConfigurationFileDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            var builder = new ConfigurationBuilder();
            var root = builder
                .AddJsonFile("appsettings.json")
                .AddIniFile("appsettings.ini")
                .Build();
            Console.WriteLine($"Key1 : {root["key1"]}");
            Console.WriteLine($"Key2 : {root["key2"]}");
            Console.WriteLine($"Key3 : {root["key3"]}");
            Console.ReadKey(); 
        }
    }
}

输出:image.png

我们发现Key3输出的是ini文件的值,说明Builder中添加我们的配置源是有顺序关系的,后添加的配置会覆盖先添加的配置

本文作者:hiwwwk

本文链接:https://www.cnblogs.com/wwwk/p/15873368.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   hiwwwk  阅读(73)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起