怎么看一个网站有没有做301,广州企业建设网站,优购物,营销型网站制作企业08 | 配置框架#xff1a;让服务无缝适应各种环境配置是应用程序发布到各种环境的必备能力#xff0c;这一节开始详细讲解 ASP.NET Core 的配置框架配置框架的核心包有两个#xff0c;一个抽象包#xff0c;一个实现包Microsoft.Extensions.Configuration.AbstractionsMicr… 08 | 配置框架让服务无缝适应各种环境配置是应用程序发布到各种环境的必备能力这一节开始详细讲解 ASP.NET Core 的配置框架配置框架的核心包有两个一个抽象包一个实现包Microsoft.Extensions.Configuration.AbstractionsMicrosoft.Extensions.Configuration这与依赖注入框架一样也是使用了接口实现分离的设计模式配置框架以 Key-value 字符串键值对的方式抽象了配置同时还支持从各种不同的数据源读取配置比如从命令行读取从环境变量读取从文件中读取配置框架的核心接口有四个IConfigurationIConfigurationRootIConfigurationSectionIConfigurationBuilder配置框架有一个核心的扩展点就是注入自己的配置源也就是说可以指定任意的配置的数据来源注入到配置框架里面IConfigurationSourceIConfigurationProvider接下来通过一个基本的控制台应用程序从头到尾演示一个配置的构建和使用源码链接https://github.com/witskeeper/geektime/tree/master/samples/ConfigurationDemo首先引入上面提到的两个包Microsoft.Extensions.Configuration.AbstractionsMicrosoft.Extensions.Configuration接着是构建和使用namespace ConfigurationDemo
{class Program{static void Main(string[] args){// ConfigurationBuilder 是用来构建配置的核心所有设置都在 builder 中完成IConfigurationBuilder builder new ConfigurationBuilder();// 注入一个内存的配置数据源注入一个字典集合作为配置数据源builder.AddInMemoryCollection(new Dictionarystring, string(){{ key1,value1 },{ key2,value2 },});// Build 方法用来把所有的配置构建出来并且获得一个 configurationRoot表示配置的根// 也就是说读取配置的动作都需要从 IConfigurationRoot 这个对象读取的IConfigurationRoot configurationRoot builder.Build();Console.WriteLine(configurationRoot[key1]);Console.WriteLine(configurationRoot[key2]);}}
}启动程序输出如下value1
value2IConfigurationSectionnamespace ConfigurationDemo
{class Program{static void Main(string[] args){// ConfigurationBuilder 是用来构建配置的核心所有设置都在 builder 中完成IConfigurationBuilder builder new ConfigurationBuilder();// 注入一个内存的配置数据源注入一个字典集合作为配置数据源builder.AddInMemoryCollection(new Dictionarystring, string(){{ key1,value1 },{ key2,value2 },{ p1:key4,value4 },{ p2:key5,value5 },{ p2:key6,value6 },});// Build 方法用来把所有的配置构建出来并且获得一个 configurationRoot表示配置的根// 也就是说读取配置的动作都需要从 IConfigurationRoot 这个对象读取的IConfigurationRoot configurationRoot builder.Build();//IConfiguration config configurationRoot;Console.WriteLine(configurationRoot[key1]);Console.WriteLine(configurationRoot[key2]);// p 的作用是指当配置不仅仅是简单的 Key value 的时候比如说需要给配置分组就可以使用 p 来定义// p 每一节是用冒号来作为节的分隔符的IConfigurationSection p configurationRoot.GetSection(p1);Console.WriteLine($key4:{p[key4]});Console.WriteLine($key5:{p[key5]});}}
}启动程序输出如下value1
value2
key4:value4
key5:p1 的 key5 没有值打印一下 p2 的 key5IConfigurationSection p2 configurationRoot.GetSection(p2);
Console.WriteLine($key5_v2:{p2[key5]});启动程序输出如下key5_v2:value5多级嵌套{ p2:p3:key7,value7 }打印输出var p3 p2.GetSection(p3);
Console.WriteLine($key7:{p3[key7]});启动程序输出如下key7:value7