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. 【报错解决】【Linux】Name or service not known

    # 配置文件位置 /etc/sysconfig/network-scripts/ # nano ifcfg-eth0查看网卡配置,确认dns已配置,且网关已配置 在虚拟机中添加临时路由网关(要与物理主 ...

  2. win10家庭版升级到专业版密钥

    J7QT3-3GCPG-9GVWT-CH2XR-GMRJM

  3. Qt音视频开发4-vlc读取和控制

    一.前言 vlc本身是个全功能的很牛逼的播放器,你能够想到的播放的功能他都有,比如获取视频文件的长度.唱片的封面.当前播放进度.设置播放进度.声音控制.静音控制等,这些vlc都给你封装好了,你直接调用 ...

  4. Qt编写安防视频监控系统30-GPS运动轨迹

    一.前言 此功能是一个客户定制的,主要是需要在地图上动态显示GPS的运动轨迹,有个应用场景就是一个带有监控的车子,实时在运动中,后台可以接收到经纬度信息,需要绘制对应的轨迹,相当于这些摄像机点位是动态 ...

  5. Windows 配置多版本JDK

    @ 目录 前言 简介 一.下载并安装多个JDK版本 二.配置环境变量 2.1 点击高级系统设置 2.2 选择环境变量 2.3 配置CLASSPATH 2.4 配置JAVA_HOME 2.5 配置Pat ...

  6. ERROR: SSL peer shut down incorrectly错误解决(Android Studio)

    错误信息:ERROR: SSL peer shut down incorrectly错误解决(Android Studio) 错误原因:android studio在下载"gradle-4. ...

  7. 阿里云maven仓库地址的配置

    两种配置方式: 1. maven 配置文件配置settings.xml中设置mirror节点 <mirror> <id>nexus-aliyun</id> < ...

  8. [密码管理/信息安全] KeePass Java 客户端 : KeePassJava2

    序:续<KeePass:密码管理工具> [密码管理/信息安全] 密码管理工具:KeePass vs LastPass vs 1Password - 博客园/千千寰宇 [推荐] 概述 Kee ...

  9. 在 Vercel 部署随机图 API

    在本文中,将详细介绍如何在 Vercel 平台上部署一个具有分类功能的随机图片 API.通过这个 API,用户可以根据不同的分类获取随机图片链接,并且还可以从所有分类中随机获取一张图片. 项目结构 首 ...

  10. [LC1260]二维网格迁移

    二维网格迁移 题目描述 给你一个 m 行 n 列的二维网格 grid 和一个整数 k.你需要将 grid 迁移 k 次. 每次「迁移」操作将会引发下述活动: 位于 grid[i][j] 的元素将会移动 ...