解读ASP.NET 5 & MVC6系列教程(5):Configuration配置(4)

foreach (var o in Configuration as Configuration) { var source = o as ConfigurationSource; foreach (var key in source.Data.Keys) { Console.WriteLine(key + ":" + source.Data[key]); } }

配置信息直接转换为实体类

在IServiceCollection接口上还有一个扩展方法.Configure<T>可以将类型IConfiguration的数据转换为一个实体类,该扩展方法的定义如下:

public static IServiceCollection Configure<TOptions>(this IServiceCollection services, IConfiguration config, int order = -1000, string optionsName = "");

举个例子,如果我们定义如下一个实体:

public class AppSettings { public string SiteTitle { get; set; } }

然后在config.json里定义一个相同结构的配置信息,示例如下:

{ "AppSettings": { "SiteTitle": "WebDemo01" } }

那么通过在Startup的构造函数将配置信息加载以后,我们就可以将该信息赋值给AppSettings实例,代码如下:

services.Configure<AppSettings>(Configuration.GetSubKey("AppSettings"));

用的时候,使用ApplicationServices的GetRequiredService方法即可,示例如下:

var appSettings = app.ApplicationServices.GetRequiredService<IOptions<AppSettings>>().Options;

注意事项:

在配置信息里,所有的key都是不区分大小写的,即key和KEY是一样的。如果多个配置源有重复的key,则以后最后添加的配置源中的key所对应的值为准。IConfiguration下的GetSubKeys和GetSubKey可以获取某个层级(或以某个层级开头的)的所有key列表。由于Configuration是多实例的,所以按照示例中的代码,该实例在Startup里初始化以后,其它类就无法访问了,所以如果要做全局性的访问,最好在初始化之后将其保存到一个静态变量中。

参考1:https://github.com/aspnet/Configuration
参考2:

您可能感兴趣的文章:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wjysfj.html