1、IConfigurationSource:表示一个配置源,其Build方法生成的IConfigurationProvider用于从当前配置源中读取key-value值(TryGey读取、Set设置键值、Load加载配置源到key-value集合、GetChildKey获取根据前缀key获取子key集合,并将earlierKeys添加到返回的字符串集合中)。IConfigurationProvider有直接实现类ConfigurationProvider,自定义IConfigurationProvider的时候,一般直接继承ConfigurationProvider类。



2、IConfigurationBuilder 用于 IConfigurationRoot(从IConfiguration继承) 对象,这也是最终供我们使用的key-value集合 。IConfigurationBuilder接口中 Sources 属性维护了一系列的 IConfigurationSource 列表。Properties 属性维护了和文件相关的字典。

static void Main(string[] args)
{
//1、创建IConfigurationBuilder
IConfigurationBuilder builder = new ConfigurationBuilder(); //2、创建配置源并添加到Builder中 IConfigurationSource //2、1系统自带的IConfigurationSource
List<KeyValuePair<string, string>> InitialData = new List<KeyValuePair<string, string>>();
InitialData.Add(new KeyValuePair<string, string>("name", "caoruipeng"));
InitialData.Add(new KeyValuePair<string, string>("info:age", "29"));
InitialData.Add(new KeyValuePair<string, string>("info:school", "北华大学"));
InitialData.Add(new KeyValuePair<string, string>("user:name", "北华大学"));
IConfigurationSource source = new MemoryConfigurationSource() { InitialData = InitialData };
builder.Add(source); //2、2自定义IConfigurationSource
IDictionary<string, string> data = new Dictionary<string, string>();
data.Add("dbkey", "dbvalue");
IConfigurationSource dbSource = new DBConfigurationSource(data);
builder.Add(dbSource); //3、创建key-value集合
IConfigurationRoot configuration = builder.Build(); //4、获取key-value
string value = configuration["name"];
value = configuration.GetValue<string>("name");
Console.WriteLine($"key:name,value:{value}");
value = configuration.GetValue<string>("dbkey");
Console.WriteLine($"key:dbkey,value:{value}"); IConfigurationSection section = configuration.GetSection("info");
}
/// <summary>
/// 自定义配置源
/// </summary>
public class DBConfigurationSource : IConfigurationSource
{
IDictionary<string, string> data = new Dictionary<string, string>();
public DBConfigurationSource(IDictionary<string, string> data)
{
this.data = data;
}
public IConfigurationProvider Build(IConfigurationBuilder builder)
{
return new DBConfigurationProvider(data);
}
}
/// <summary>
/// 自定义配置源的Provider,用于从配置源中读取key-value值
/// </summary>
public class DBConfigurationProvider : ConfigurationProvider
{
public DBConfigurationProvider(IDictionary<string, string> data)
{
Data = data;
}
public override void Load()
{
base.Load();
}
}

3、系统自带的配置源 也就是IConfigurationSource的实现类

3.1 MemoryConfigurationSource:从内存中加载读取key-value。

3.2 ChainedConfigurationSource:直接维护了一个IConfiguration对象,通过IConfiguration加载读取key-value配置。

3.3 CommandLineConfigurationSource:从命令行加载读取key-value,从命令行读取命令,按 = 分割为key-value。

3.4 EnvironmentVariablesConfigurationSource:从环境变量中加载读取key-value。

3.5 FileConfigurationSource:抽象类,从文件中加载配置

3.5.1 JsonConfigurationSource : FileConfigurationSource:从json配置文件中加载配置。
3.5.2 IniConfigurationSource : FileConfigurationSource:从ini配置文件中加载配置
3.5.3 XmlConfigurationSource : FileConfigurationSource:从xml配置文件中加载配置

3.6 StreamConfigurationSource:抽象类,从Stream流中加载配置

3.6.1 JsonStreamConfigurationSource:StreamConfigurationSource:从Json流中加载配置。
3.6.2 XmlStreamConfigurationSource:StreamConfigurationSource:从xml流中加载配置。

3.3.3 IniStreamConfigurationSource:StreamConfigurationSource:从ini流中加载配置。

asp.net core配置项示例代码的更多相关文章

  1. 【译】在 ASP.NET 和 ASP.NET Core 之间共享代码

    原文 | Ken 翻译 | 郑子铭 随着 .NET 6 的发布,使用 ASP.NET Core 可以获得更多好处.但是将现有代码迁移到 ASP.NET Core 通常听起来像是一项巨大的投资.今天我们 ...

  2. asp.net导出excel示例代码

    asp.net导出excel的简单方法. excel的操作,最常用的就是导出和导入. 本例使用NPOI实现. 代码:/// <summary> );             ;       ...

  3. ASP.NET Core Loves JavaScript

    前言 在 ASP.NET 团队的 Github 的主页上,有这样一个开源项目叫:"JavaScriptsServices",那么 什么是 JavaScriptsServices 呢 ...

  4. 我眼中的ASP.NET Core之微服务

    ### 前言 前几天在博客园看到有园友在分享关于微软的一个微服务架构的示例程序,想必大家都已经知道了,那就是[eShopOnContainers](https://github.com/dotnet- ...

  5. 一个Mini的ASP.NET Core框架的实现

    一.ASP.NET Core Mini 在2019年1月的微软技术(苏州)俱乐部成立大会上,蒋金楠老师(大内老A)分享了一个名为“ASP.NET Core框架揭秘”的课程,他用不到200行的代码实现了 ...

  6. ASP.NET Core 实战:将 .NET Core 2.0 项目升级到 .NET Core 2.1

    一.前言  最近一两个星期,加班,然后回去后弄自己的博客,把自己的电脑从 Windows 10 改到 Ubuntu 18.10 又弄回 Windows 10,原本计划的学习 Vue 中生命周期的相关知 ...

  7. 声明式RESTful客户端在asp.net core中的应用

    1 声明式RESTful客户端 声明式服务调用的客户端,常见有安卓的Retrofit.SpringCloud的Feign等,.net有Refit和WebApiClient,这些客户端都是以java或. ...

  8. ASP.NET Core 使用外部登陆提供程序登陆的流程,以及身份认证的流程 (转载)

    阅读目录 在Asp.Net Core 中使用外部登陆(google.微博...) 中间件管道 The Authentication Middleware The Challenge 与认证中间件进行交 ...

  9. C# -- HttpWebRequest 和 HttpWebResponse 的使用 C#编写扫雷游戏 使用IIS调试ASP.NET网站程序 WCF入门教程 ASP.Net Core开发(踩坑)指南 ASP.Net Core Razor+AdminLTE 小试牛刀 webservice创建、部署和调用 .net接收post请求并把数据转为字典格式

    C# -- HttpWebRequest 和 HttpWebResponse 的使用 C# -- HttpWebRequest 和 HttpWebResponse 的使用 结合使用HttpWebReq ...

  10. Asp.Net Core 调用第三方Open API查询物流数据

    在我们的业务中不可避免要与第三方的系统进行交互,调用他们提供的API来获取相应的数据,那么对于这样的情况该怎样进行处理呢?下面就结合自己对接跨越速运接口来获取一个发运单完整的物流信息为例来说明如何在A ...

随机推荐

  1. django介绍及基本使用

    目录 一.python主流web框架 二.django简介 1.版本问题 2.运行django注意事项 三.django基本使用 1.下载模块 2.验证 3.常见命令 4.pycharm自动创建dja ...

  2. springboot 多数据源(aop方式)

    一.实现思路 在yml中定义多个数据源的配置,然后创建一个类DynamicDataSource去继承AbstractRoutingDataSource类 AbstractRoutingDataSour ...

  3. 转载 OKHttp使用详解

      一,OKHttp介绍 okhttp是一个第三方类库,用于android中请求网络. 这是一个开源项目,是安卓端最火热的轻量级框架,由移动支付Square公司贡献(该公司还贡献了Picasso和Le ...

  4. Java多线程处理文件详解与代码示例

    在Java编程中,文件处理是一项常见的任务.当需要处理大量文件或处理文件的时间较长时,单线程的处理方式可能会显得效率低下.为了提高文件处理的效率,我们可以使用多线程技术.本文将详细介绍如何使用Java ...

  5. Qt编写可视化大屏电子看板系统23-模块1产量汇总

    一.前言 大屏系统采用结构模块化的分层设计思路,一个表对应一个最小模块比如模具产量.零件产量,数据库采集的时候采集对应的表,拿到数据后按照对应的数据规则传给控件绘制,其中模具产量.零件产量两个模块采用 ...

  6. Qt编写地图综合应用32-区域地图

    一.前言 echart本身是没有提供省市区域轮廓图的,需要引入外部的js文件才能绘制,为了拿到全国各省市的对应轮廓图js文件,特意去网上搜索了很多的相关文章并理解,下载到了对应的省市区域的json数据 ...

  7. TypeScript学习(二) - TypeScript的接口(interface)和类(class)

    1. 对象的类型--接口 1.1 什么是接口 1.2 简单的例子 1.3 可选属性 1.4 任意属性 1.5 只读属性 2. 类 2.1 类的概念 2.2 ES6 中类的用法 属性和方法 类的继承 存 ...

  8. 树莓派cm4更新bootloader(eeprom)

    cm4不能在系统里通过 rpi-eeprom-update 指令进行升级,也不能通过 update 进行更新,只能通过recovery模式进行更新. 以下为Windows的升级方式. Setp 1:下 ...

  9. 从BIOS+MBR迁移到UEFI+GPT 并修复Ubuntu Grub2 UEFI引导

    之前在虚拟机里使用了默认配置安装了Ubuntu16.04,由于需要扩充磁盘空间不得不将磁盘从MBR分区表转换到GPT分区表. 简单介绍一下思路:首先通过Windows下的DiskGenius软件备份U ...

  10. CDS标准视图:功能位置信息 I_FunctionalLocationData

    视图名称:I_FunctionalLocationData 视图类型:基础视图 视图代码: 点击查看代码 @EndUserText.label: 'Functional Location Data' ...