关于.Net Core 读取json文件的

杨中科:

通过Nuget,安装三个包 :

Microsoft.Extensions.Configuration,

Microsoft.Extensions.Configuration.Abstractions,

Microsoft.Extensions.Configuration.Json

并引用 :     using Microsoft.Extensions.Configuration;

相关代码:

static void Main(string[] args)
{
           //读取配置文件==> 如果被读取的文件必须调整为可以被复制,如果不可以被复制则会导致,
            ConfigurationBuilder builder = new ConfigurationBuilder();
            builder.AddJsonFile("Config.json",optional:true,reloadOnChange:true);
            IConfigurationRoot configuration= builder.Build();
            string name=configuration["name"];
            Console.WriteLine(name);
            string add=configuration.GetSection("proxy:address").Value;
            Console.WriteLine(add);
            Console.Read();
}

要介绍原理,先看与配置相关的几个接口及它们的实现类:

  IConfigurationBuilder

  配置建造者接口,我们使用它去创建配置对象,有一个实现类:ConfigurationBuilder

  IConfiguration

  表示配置集合的接口,一般的,程序通过从DI获取IConfiguration接口的实例来获取配置

  IConfigurationRoot

  IConfiguration的子接口,表示配置的根节点,换句话说,IConfigurationBuilder创建的第一个配置对象就是IConfigurationRoot接口对象,它的实现类是:ConfigurationRoot

  IConfigurationSection

  IConfiguration的子接口,表示配置的一个节点,包含节点名、节点路径、值等等,配置节点分隔默认是冒号(:),它的实现类是:ConfigurationSection

  IConfigurationSource

  配置来源接口,IConfigurationSource接口的实现类都很简单,主要用于结合Options创建配置提供者IConfigurationProvider,一般的,它的作用可以认为就是接收参数,然后在创建IConfigurationProvider时将参数传进去。

  但是在读取来自文件的配置时,推荐继承抽象类:FileConfigurationSource ,其它的就直接实现 IConfigurationSource 就可以了,然后添加到 IConfigurationBuilder 的配置源中去。

  IConfigurationProvider

  配置信息的具体提供者,这个就是提供配置的获取、更新等等操作的接口,有两个重要的抽象类:ConfigurationProvider 和 FileConfigurationProvider 

  一般的,如果我们需要集成自己的配置,需要实现这个 IConfigurationSource 接口和 IConfigurationProvider 接口,如果我们的配置和文件有关,建议通过继承 FileConfigurationSource 两个 FileConfigurationProvider 两个抽象类来实现 IConfigurationSource 和 IConfigurationProvider接口,因为这两个抽象类已经提供了一些我们可能需要的功能,比如,它们可以监听文件状态,如果文件内容被修改,则可以重新加载配置。如果配置不来自文件,配置来源可以直接实现 IConfigurationSource 接口,而通过继承 ConfigurationProvider 来实现 IConfigurationProvider 接口。

   于是乎,将它们串接起来,流程就是这样的:

  1、提供一个实现了 IConfigurationProvider 接口的配置提供类,它需要提供配置的读取以及更新等操作

  2、提供一个 IConfigurationSource 接口实现类,它负责创建 IConfigurationProvider 。

  3、创建一个 IConfigurationBuilder 配置建造者对象,然后将 IConfigurationSource 添加进配置构造者中,这里我们一般都采用 IConfigurationBuilder 的拓展方法来实现。

  4、使用 IConfigurationBuilder 构造一个 IConfigurationRoot ,然后使用这个 IConfigurationRoot 去操作配置。

  这是一般流程,而.net core的配置是一个拓展模块,也就是说我们可以在控制台等其他项目中引用,只需要安装包:Microsoft.Extensions.Configuration

完整介绍:

.net core的配置介绍(一):IConfiguration - 没有星星的夏季 - 博客园 (cnblogs.com)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值