解析ASP。网络核心配置教程之读取配置信息的方法

  介绍

这篇文章主要介绍解析ASP。网络核心配置教程之读取配置信息的方法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

提到“配置”二字,我想绝大部分。NET开发人员脑海中会立马浮现出两个特殊文件的身影,那就是我们再熟悉不过的app.config和web . config,多年以来我们已经习惯了将结构化的配置信息定义在这两个文件之中。到了。网络核心的时候,很多我们习以为常的东西都发生了改变,其中也包括定义配置的方式。总的来说,新的配置系统显得更加轻量级,并且具有更好的扩展性,其最大的特点就是支持多样化的数据源。我们可以采用内存的变量作为配置的数据源,也可以直接配置定义在持久化的文件甚至数据库中。

由于很多人都不曾接触过这个采用全新设计的配置系统,为了让大家对此有一个感官的认识,我们先从编程的角度对它作一个初体验。针对配置的API涉及三个对象,它们分别是配置,ConfigurationBuilder和ConfigurationProvider,配置模型中具有相应的接口来表示它们。这三个对象之间的关系很清晰,配置对象承载着在编程过程中使用的配置信息,ConfigurationProvider则是配置信息原始数据源的提供者,两者之间沟通由ConfigurationBuilder来完成,它利用ConfigurationProvider提取源数据将其转换为配置对象。

<强>一、以键-值对的形式读取配置
虽然在大部分情况下的配置信息从整体来说都具有一个结构化的层次关系,但是“原子”配置项都以最简单的“键-值”对的形式来体现,并且键和值都是字符串,接下来我们会通过一个简单的实例来演示如何以键值对的形式来读取配置。我们创建一个针对ASP。网络核心的控制台应用,并在project.json中按照如下的方式添加针Microsoft.Extensions对”。配置”这个NuGet包的依赖,配置模型就实现在这个包中。

{   …   “dependencies": {   “Microsoft.Extensions.Configuration":“1.0.0-rc1-final"   },   }

假设我们的应用需要通过配置来设定日期/时间的显示格式,为此我们定义了如下一个DateTimeFormatSettings类,它的四个属性体现了DateTime对象的四种显示格式(分别为长日期/时间和短日期/时间)。

 DateTimeFormatSettings公共类
  {
  公共字符串LongDatePattern{得到;设置;}
  公共字符串LongTimePattern{得到;设置;}
  公共字符串ShortDatePattern{得到;设置;}
  公共字符串ShortTimePattern{得到;设置;}//其他成员
  }

我们希望通过配置的形式来控制由DateTimeFormatSettings的四个属性体现的日期/时间显示格式,所以我们为它定义了一个构造函数。如下面的代码片段所示,该构造函数具有一个IConfiguration接口类型的参数,它正式承载相关配置信息的配置对象。我们调用配置对象的索引并指定相应配置项的键来得到其价值。

 DateTimeFormatSettings公共类
  {//其他成员
  公共DateTimeFormatSettings (IConfiguration配置)
  {
  这一点。LongDatePattern=配置(“LongDatePattern");
  这一点。LongTimePattern=配置(“LongTimePattern");
  这一点。ShortDatePattern=配置(“ShortDatePattern");
  这一点。ShortTimePattern=配置(“ShortTimePattern");
  }
  }

要创建一个体现当前配置的DateTimeFormatSettings对象,我们必须向得到这个承载相关配置信息的配置对象,正如我们上面所说,配置对象是由ConfigurationBuilder创建的,而原始的配置信息则是通过相应的ConfigurationProvider来读取的,所以创建一个配置对象的正确编程方式是先创建一个ConfigurationBuilder对象,然后为之添加一个或者多个ConfigurationProvider对象,最后利用ConfigurationBuilder来创建我们需要的配置对象。

按照上述的编程模式,我们在一个控制台应用中编写了如下的程序。我们创建了一个类型为ConfigurationBuilder的对象,调用其添加方法添加的ConfigurationProvider是一个类型为MemoryConfigurationProvider的对象。顾名思义,MemoryConfigurationProvider利用内存中的对象来提供原始的配置信息,具体来说这些原始的配置信息保存在一个元素类型为KeyValuePair<字符串,string>的集合之中。我们最终调用ConfigurationBuilder的制造方法获取用于创建DateTimeFormatSettings对象所需的配置。

公共类项目
  {
  公共静态void Main (string [] args)
  {
  string> Dictionary<字符串;源=new Dictionary<字符串,string>
  {
  [“LongDatePattern"]=癲ddd,嗯d, yyyy"
  [“LongTimePattern"]=癶: mm: ss tt"
  [“ShortDatePattern"]=癕/d/yyyy"
  [“ShortTimePattern"]=癶: mm tt"
  };
  IConfiguration配置=new ConfigurationBuilder ()
  阀门(新MemoryConfigurationProvider(源))
  .Build ();
  
  DateTimeFormatSettings设置=new DateTimeFormatSettings(配置);
  Console.WriteLine (“{0, -16}: {1}“,“LongDatePattern", settings.LongDatePattern);
  Console.WriteLine (“{0, -16}: {1}“,“LongTimePattern", settings.LongTimePattern);
  Console.WriteLine (“{0, -16}: {1}“,“ShortDatePattern", settings.ShortDatePattern);
  Console.WriteLine (“{0, -16}: {1}“,“ShortTimePattern", settings.ShortTimePattern);
  }
  }

解析ASP。网络核心配置教程之读取配置信息的方法