.NET Core - 配置绑定:使用强类型对象承载配置数据

简介: .NET Core - 配置绑定:使用强类型对象承载配置数据
+关注继续查看

配置绑定

本节学习,配置绑定---使用强类型对象承载配置数据,这样做的目的是为了更方便的管理配置对象。因为,这意味着,我们可以直接从对象来查看配置的信息。如下,我们有一个json配置文件

{
  "key1": "value1",
  "key2": 0,
  "Section1": {
    "key3": "value3",
    "key4": 10,
    "key5": true
  }
}

我们先定义一个用来承载配置的类,将其定义为ConfigModel

class ConfigModel
{
    public String key1 { get; set; }
    public int key2 { get; set; }
    public int key4 { get; set; }
    public bool key5 { get; private set; } = false;
}

首先,我们利用文件提供程序类型来加载配置

IConfigurationBuilder configurationBuilder = new ConfigurationBuilder();
configurationBuilder.AddJsonFile("settings.json");
 
IConfigurationRoot configurationRoot = configurationBuilder.Build();

配置绑定我们通过Bind方法,如下,我们给ConfigModel来赋值初始值,以便与最后的结果做比较

ConfigModel configModel = new ConfigModel() { key1 = "value1new", key2 = 10 ,key4=30};
//可以进行对此绑定,应该还可以绑定到不同的对象。
configurationRoot.Bind(configModel);

我们可以同时将配置绑定到多个对象,比如,我们可能加载了多个配置文件,或者以配置文件的多个Section等来区分,我们可以进行多次绑定

ConfigModel configModel = new ConfigModel() { key1 = "value1new", key2 = 10 ,key4=30};
//可以进行对此绑定,应该还可以绑定到不同的对象。
configurationRoot.Bind(configModel);
//获取节,并绑定
configurationRoot.GetSection("Section1").Bind(configModel);
//...

私有变量/方法的处理

如上,ConfigModel中的key5的set方法是private的,也就意味着,我们在类外部无法直接调用其set方法,那么,我们该如何将配置文件中的值赋值到类呢?

这里,我们需要用到BinderOptions。Bind()带有第二个参数BinderOptions,可以让我们指定绑定选项。如我们要给key5赋值

configurationRoot.GetSection("Section1").Bind(configModel,options=> { options.BindNonPublicProperties = true; });

这里options.BindNonPublicProperties = true代表我们允许绑定私有属性。

这样我们就可以获取到私有变量的值了。

 

其实,在实际的开发过程中,我们一般都会用类来承载我们的配置,因为这样,不仅可以更直观的了解配置,而且便于对配置进行管理。下面一节,学习如何低成本实现自定义的配置源。

 

源码可访问

https://github.com/IronMarmot/Samples/tree/master/CoreSamples


相关文章
|
29天前
|
前端开发 JavaScript
.net core 前端传递参数有值 后端接收到的数据却是null
1、问题分析 在做接口测试时,偶然出现了前端输出有值,但是后端断点调试时却出现接收参数总是为null的情况 2、解决办法 前端打印log,看前端的每一个传值的数据类型,与后端请求参数类进行认真的一一比对 小技巧: ① 直接打印调用接口的传参值的数据类型,例如 console.log(type of this.form.name) --string console.log(type of this.form.age) --number 打印的数据类型与后端接口的参数类比对,查出不对应的类型 ② 关于非必填的值,默认传值可能出现空字符串(' ')、NaN值(Not a Number
42 0
|
2月前
.NET Core配置强类型绑定及配置热更新能力
学习了配置框架的4种配置方式之后,我们可以对不同的环境选择不同的配置方式,以使服务能够更好的适应各种环境,那么,你是否觉得配置虽然加载进服务中,但是使用起来却不是很方便,每次读取都得通过对应的键值去根查找,是否想过如果我们修改了配置文件呢?本篇,我们一起来学习下这两个问题。为了方便演示,本节使用文件提供程序配置方式。
|
4月前
|
数据库 C#
C#,.net,winform导入Excel功能以及下载Excel文件到本地,并使用SqlBulkCopy把DataTable类型的数据写入到sqlserver数据库中
C#,.net,winform导入Excel功能以及下载Excel文件到本地,并使用SqlBulkCopy把DataTable类型的数据写入到sqlserver数据库中
78 0
|
6月前
|
数据挖掘 Python
4.【.netcore Configuration】理解Configuration中Section弱方式读取和Binder模式的强类型读取代码
4.【.netcore Configuration】理解Configuration中Section弱方式读取和Binder模式的强类型读取代码
65 0
|
7月前
|
Web App开发
.Net Core下使用HtmlAgilityPack解析采集互联网数据
.Net Core下使用HtmlAgilityPack解析采集互联网数据
53 0
|
前端开发
.NET MVC第五章、模型绑定获取表单数据
.NET MVC第五章、模型绑定获取表单数据
46 0
.NET MVC第五章、模型绑定获取表单数据
|
前端开发
.NET MVC第四章、模型绑定获取表单数据
.NET MVC第四章、模型绑定获取表单数据
70 0
.NET MVC第四章、模型绑定获取表单数据
|
小程序 安全 API
.NET企业微信回调配置(数据回调URL和指令回调URL验证)(一)
.NET企业微信回调配置(数据回调URL和指令回调URL验证)
741 0
.NET企业微信回调配置(数据回调URL和指令回调URL验证)(一)
|
JSON 数据格式
【.NET开发福音】使用Visual Studio将JSON格式数据自动转化为对应的类
【.NET开发福音】使用Visual Studio将JSON格式数据自动转化为对应的类
509 0
【.NET开发福音】使用Visual Studio将JSON格式数据自动转化为对应的类
|
开发框架 关系型数据库 MySQL
.NET Core使用NPOI将Excel中的数据批量导入到MySQL
.NET Core使用NPOI将Excel中的数据批量导入到MySQL
224 0
.NET Core使用NPOI将Excel中的数据批量导入到MySQL
推荐文章
更多