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. Premiere剪辑加速

    使用AE或者Premire的时候,如果需要导出文件,有的文件还是挺大的,处理起来疯狂占用CPU,经常导致别的工作无法进行. 如果能够使用GPU进行压缩工作就好了,如果你用一块独立显卡,那么就可以正常使 ...

  2. 【Linux】【UOS】为挂载的磁盘创建快捷方式(软链接)

    打开项目或者保存文件的时候,如果需求路径不是系统盘路径,那么找起来还真是麻烦.以下时候通过创建快捷方式(软链接)的方式,将打开磁盘的快捷方式放在用户目录下,就方便寻找打开了. 1.查询挂载点 sudo ...

  3. Qt/C++编写的mqtt调试助手使用说明

    一.使用说明 第一步,选择协议前缀,可选mqtt://.mqtts://.ws://.wss://四种,带s结尾的是走ssl通信,ws表示走websocket通信.一般选默认的mqtt://就好. 第 ...

  4. Qt音视频开发47-通用视频控件

    一.前言 自从视频监控系统的内核不断增加,从最初的vlc到ffmpeg然后到mpv,后面还陆续增加了海康sdk等,每次增加一个内核,整个视频监控系统就有三五个代码文件需要修改,而且大部分是重复的代码, ...

  5. Qt音视频开发44-实时人脸框

    一.前言 在人脸识别到以后,需要在实时视频上将所有人脸框绘制出来,一把来说识别人脸会有多种选择,一个是识别最大人脸,这种场景主要用于刷脸门禁,还有一种是识别所有人脸,这种场景主要用于人脸识别摄像机,就 ...

  6. Qt开源作品4-网络调试助手

    一.前言 网络调试助手和串口调试助手是一对的,用Qt开发项目与硬件通信绝大部分都是要么串口通信(RS232 RS485 Modbus等),要么就是网络通信(TCP UDP HTTP等),所以一旦涉及到 ...

  7. Opencv 中 Mat中元素的值读取方法总结

    1.利用 at 函数读取 (1)单通道图像读取方式 Mat img1 = imread(filename,IMREAD_GRAYSCALE); for( size_t nrow = 0; nrow & ...

  8. 即时通讯技术文集(第24期):音视频WebRTC好文合集 [共20篇]

    为了更好地分类阅读 52im.net 总计1000多篇精编文章,我将在每周三推送新的一期技术文集,本次是第 24 期. [- 1 -] 开源实时音视频技术WebRTC的现状 [链接] http://w ...

  9. IM跨平台技术学习(九):全面解密新QQ桌面版的Electron内存优化实践

    本文由QQ技术团队分享,本文收录时有内容修订和大量排版优化. 1.引言 QQ 作为国民级应用,从互联网兴起就一直陪伴着大家,是很多用户刚接触互联网就开始使用的应用. 而 QQ 桌面版最近一次技术架构升 ...

  10. 一套十万级TPS的IM综合消息系统的架构实践与思考

    本文由作者jhon_11分享,有大量修订和改动. 1.引言 如何设计一款高性能.高并发.高可用的im综合消息平台是很多公司发展过程中会碰到且必须要解决的问题.比如一家公司内部的通讯系统.各个互联网平台 ...