.net core之编纂json配置文件
比来在具体项目开发应用中,项目给与的json格局配置文件,配置文件的加载给与的IConfiguration接口东西进行的打点,这是.net standard时代,微软所供给的现代化的配置打点工具。
项目设计中,需要在运行过程中,将长途处事端发送过来的配置信息回写到配置文件中。然而,必应也好,百度也罢,翻遍网络,,这套现代化的配置打点模型中,却找不到一个可以转变配置回写的要领。
无奈之下,只好本身动手,手动造轮子了。
.NET Standard时代的配置模型跟着.NET Standard时代的到临,System.Configuration在.net core中已经不存在了,那么取而代之的是Microsoft.Extensions.Configuration系列配置打点类库:
Microsoft.Extensions.Configuration.Abstractions:根本接口
Microsoft.Extensions.Configuration:实现上面的根本接口
Microsoft.Extensions.Configuration.FileProviderExtensions:供给重载配置扩展
Microsoft.Extensions.Configuration.Binder:供给转换到实体成果
Microsoft.Extensions.Configuration.FileExtensions:供给配置文件根路径扩展
相关文章资源关于以上类库的使用,网上有大量相关文章,如知名博主大内老A的文章中,有着系统、详细论述,列位可自行查阅。
链接在此:https://www.cnblogs.com/artech/p/config-for-net-core.html
配置类的建议用法出于编程上的便当,我们凡是不会直接操作ConfigurationBuilder创建的Configuration东西读取某个单一配置项的值,而是倾向于将一组相关的配置绑定为一个东西。
例如笔者某个项目动静主题配置参数类如下:
1 public class TopicConfig 2 { 3 public string Project { get; set; } ="ibms"; 4 public string Device { get; set; } = "gateway"; 5 public string City { get; set; } = "wuhan"; 6 public string Area { get; set; } = "poly"; 7 }
View Code我们可以为配置类指定默认参数。
在需要使用配置参数的东西中,我们可以将配置类设置为属性字段
private TopicConfig topicConfig = new TopicConfig();
当东西类被实例化时,配置类将自动被结构并拥有默认配置参数
我们在需要使用配置的东西类中,写一个加载配置类的要领和生存配置类的要领,当东西类结构时,挪用并执行加载配置文件。
当配置文件存在时,判断对应的配置段是否存在,如果存在,则绑定到对应的配置类,从而实现配置参数的加载(东西类中,相关需要使用配置参数的处所,直接从配置类的获取参数);
当配置文件不存在时,加载配置要领挪用生存配置要领,将默认配置回写到配置文件中。
当配置参数动态更新后需要生存时,也通过挪用生存配置要领,将配置参数更新到配置文件中。
示例json配置文件{ "topic": { "Project": "ibms", "Device": "gateway", "City": "wuhan", "Area": "poly" } }
加载配置要领笔者给与措施目录下的"appsettings.json"文件作为配置文件
1 private void LoadConfig() 2 { 3 var path = Directory.GetCurrentDirectory(); 4 var config_file = "appsettings.json"; 5 var full_path = Path.Combine(path, config_file); 6 if (File.Exists(full_path)) 7 { 8 var builder = new ConfigurationBuilder() 9 .SetBasePath(path) 10 .AddJsonFile("appsettings.json"); 11 12 IConfiguration Configuration = builder.Build(); 13 14 if (Configuration.GetSection(Topic).Exists())//Topic为字符串常量,对应配置段属性名称 15 Configuration.GetSection(Topic).Bind(topicConfig);//绑定配置数据到配置类 16 } 17 else 18 { 19 SaveConfig(); 20 } 21 }
View Code温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/web/30826.html