Appsetting(数据源可以使用字典配置文件文件)「数据字典配置有什么用」

ASP.NET Core 中,可以使用 ConfigurationBuilder 对象来构建
主要分为三部:配置数据源 -> ConfigurationBuilder -> 使用
数据源可来自字典或配置文件
数据源要么继承 IConfigurationSource ,要么从配置文件中读取
1,来自字典我们先使用字典存储键值对,来设置配置, test = 配置,然后使用 ConfigurationBuilder.Add() 方法添加数据源, Add 方法可以添加继承了 IConfigurationSource 的数据源
MemoryConfigurationSource 继承了 IConfigurationSource ,使用字典作为数据源
var dic = new Dictionary<string, string>() { ["test"] = "配置" }; var config = new ConfigurationBuilder() .Add(new MemoryConfigurationSource() { InitialData = dic }).Build();string test = config["test"]; 老是 new 不太爽,可以使用下面的方法来读取字典中的数据源:var dic = new Dictionary<string, string>(){ ["test"] = "配置" }; var config = new ConfigurationBuilder() .AddInMemoryCollection(dic).Build(); string test = config["test"]; 2,来自配置文件假如在 项目根目录下创建一个 json 文件,内容如下:{ "test":"配置" }那么可以这样读取配置:var config = new ConfigurationBuilder() .AddJsonFile("test.json") .Build(); string test = config["test"]; Console.WriteLine(test); 如果配置文件不在根目录下,则可以使用 SetBasePath() 来定义路径,示例如下:var config = new ConfigurationBuilder() .SetBasePath("E:\\test\\aaa") .AddJsonFile("test.json") .Build(); 上面看到,获取配置项是非常简单的, config["{KeyName}"] 即可获得 value
另外,可以监控 json 文件,当 json 文件发生更改时,主动更新
config.AddJsonFile("appsettings.json",optional: true,reloadOnChange: true); 3,层次结构配置数据源可以有层次结构
ASP.NET Core 中,都会有个 appsettings.json 文件,其内容如下:{ "Logging": { "LogLevel": { "Default": "Information", "Microsoft": "Warning", "Microsoft.Hosting.Lifetime": "Information" } }} 那么我们使用时,可以使用 : 符号获取下一层子项的配置
var config = new ConfigurationBuilder() .AddJsonFile("appsettings.json") .Build(); string test = config["Logging:LogLevel:Default"]; 如果你只想 获取 json 文件中 LogLevel 部分的配置,可以使用 GetSection() 方法
var config = new ConfigurationBuilder() .AddJsonFile("appsettings.json") .Build() .GetSection("Logging:LogLevel"); string test = config["Default"]; 通过 json 配置文件,我们可以很方便地构建层级结构的配置,如果想在字典中存储,可以使用 "{k1}:{k2}" 这种形式存
例如:var dic = new Dictionary<string, string>(){ ["testParent:Child1"] = "6", ["testParent:Child2"] = "666" }; var config = new ConfigurationBuilder() .AddInMemoryCollection(dic) .Build().GetSection("testParent");string test = config["Child1"]; 4,映射我们可以使用 Get<>() 方法,将配置映射为对象
public class TestOptions{ public string A { get; set; } public string B { get; set; } public string C { get; set; }} var dic = new Dictionary<string, string>(){ ["A"] = "6", ["B"] = "66", ["C"] = "666" }; TestOptions config = new ConfigurationBuilder() .AddInMemoryCollection(dic) .Build().Get<TestOptions>();
Appsetting(数据源可以使用字典配置文件文件)
(图片来源网络,侵删)

联系我们

在线咨询:点击这里给我发消息