首页 » 排名链接 » Appsetting配置与获取(配置数据源可以使用字典配置文件)

Appsetting配置与获取(配置数据源可以使用字典配置文件)

admin 2024-10-24 06:33:17 0

扫一扫用手机浏览

文章目录 [+]

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 文件,内容如下:

Appsetting配置与获取(配置数据源可以使用字典配置文件) 排名链接
(图片来自网络侵删)

{ "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>();

标签:

相关文章

楼宇自控预算(楼宇自控系统预算设备)

一、楼宇自控的背景随着信息技术的迅猛发展和城市化进程的加速推进,智慧建筑作为未来城市发展的重要方向,成为了各界关注的焦点。而楼宇自...

排名链接 2025-01-03 阅读576 评论0