.NET Core开发实战学习笔记--配置框架

前言 

        配置是应用程序发布到各种环境的必备能力 

配置框架的核心组件包

  • Microsoft.Extensions.Configuration. Abstractions--抽象包
  • ●Microsoft.Extensions.Configuration--实现包

        在我们通常使用的配置,都是以key和value的形式来存放的,无论是使用Json还是XML本质上都是key和value的结构,配置框架也是以key-value键值对的方式抽象了配置。这就意味着我们在使用的时候只关心key和value就可以了。

        另外配置框架还支持配置各种数据源,比如我们可以从命令行读取,从环境变量读取,从文件读取。

配置框架的核心类型

  • IConfiguration
  • IConfigurationRoot
  • IConfigurationSection
  • IConfigurationBuilder

        配置框架有一个核心的扩展点,就是诸如我们自己的配置源,也就是说我们可以指定任意的配置数据来源注入到我们的配置框架里面。

使用Nuget引入两个核心组件包

 

using System;
using System.Collections.Generic;
using Microsoft.Extensions.Configuration;
namespace ConfigurationDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            IConfigurationBuilder builder = new ConfigurationBuilder();
            builder.AddInMemoryCollection(new Dictionary<string, string>()
            {
                { "key1","value1" },
                { "key2","value2" },
                { "section1:key4","value4" },
            });

            IConfigurationRoot configurationRoot = builder.Build();


            IConfiguration config = configurationRoot;

            Console.WriteLine(configurationRoot["key1"]);
            Console.WriteLine(configurationRoot["key2"]);
        }
    }
}

第1行代码:Config builder是用来构建我们配置的核心,我们所有的配置都是在Builder中完成。

第2行代码:是我们注入了一个内存的配置数据源,定义了三个配置

第3行代码:Builder方法是用来把所有的配置构建出来,并且获得一个IConfigurationRoot ,IConfigurationRoot 表示我们配置的根,也就是说我们读取配置的动作都需要从IConfigurationRoot这个对象读取的。

 运行项目可以看到程序获取到了key1和key2的值并打印了出来。

section

        section 的作用是指当我们的配置不仅仅是简单的key value的时候,比如说需要把配置分组这个时候我们就可以用section来定义。section每一节是用冒号来作为节的分隔符。

         比如说我们定义了section1我们用冒号来连接我们的key

            IConfigurationBuilder builder = new ConfigurationBuilder();
            builder.AddInMemoryCollection(new Dictionary<string, string>()
            {
                { "key1","value1" },
                { "key2","value2" },
                { "section1:key4","value4" },
                { "section2:key5","value5" },
                { "section2:key6","value6" },
                { "section2:section3:key7","value7" }
            });

 

获取 section

        获取section1并打印section1里面的“key4”

IConfigurationSection section = configurationRoot.GetSection("section1");
Console.WriteLine($"key4:{section["key4"]}");

 多级嵌套

        比如我们在section2中嵌套section3

{"section2:section3:key7","value7"}

         获取并输出section3的“key7”

var section3 = section2.GetSection("section3");
Console.WriteLine($"key7:{section3["key7"]}");

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值