.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


相关文章
|
4月前
|
开发框架 JSON 安全
分享一个 .NET Core 使用选项方式读取配置内容的详细例子
分享一个 .NET Core 使用选项方式读取配置内容的详细例子
|
4月前
【Azure 应用服务】App Service 配置 Application Settings 访问Storage Account得到 could not be resolved: '*.file.core.windows.net'的报错。没有解析成对应中国区 Storage Account地址 *.file.core.chinacloudapi.cn
【Azure 应用服务】App Service 配置 Application Settings 访问Storage Account得到 could not be resolved: '*.file.core.windows.net'的报错。没有解析成对应中国区 Storage Account地址 *.file.core.chinacloudapi.cn
|
4月前
|
开发框架 NoSQL .NET
使用 Asp.net core webapi 集成配置系统,提高程序的灵活和可维护性
使用 Asp.net core webapi 集成配置系统,提高程序的灵活和可维护性
|
4月前
|
开发框架 前端开发 JavaScript
前后端分离,Asp.net core webapi 如何配置跨域
前后端分离,Asp.net core webapi 如何配置跨域
|
4月前
.Net Core NLog 配置
.Net Core NLog 配置
38 0
|
3月前
|
开发框架 前端开发 JavaScript
ASP.NET MVC 教程
ASP.NET 是一个使用 HTML、CSS、JavaScript 和服务器脚本创建网页和网站的开发框架。
51 7
|
3月前
|
存储 开发框架 前端开发
ASP.NET MVC 迅速集成 SignalR
ASP.NET MVC 迅速集成 SignalR
82 0
|
4月前
|
开发框架 前端开发 .NET
ASP.NET MVC WebApi 接口返回 JOSN 日期格式化 date format
ASP.NET MVC WebApi 接口返回 JOSN 日期格式化 date format
60 0
|
4月前
|
开发框架 前端开发 安全
ASP.NET MVC 如何使用 Form Authentication?
ASP.NET MVC 如何使用 Form Authentication?
|
4月前
|
开发框架 .NET
Asp.Net Core 使用X.PagedList.Mvc.Core分页 & 搜索
Asp.Net Core 使用X.PagedList.Mvc.Core分页 & 搜索
151 0