2. 设置添加
设置体系可以读取到设置文件中的信息,那必然有某个地方可以将设置文件添加到设置体系中。之前的文章中讲到 ASP.NET Core 入口文件中,builder(WebApplicationBuilder 对象) 中有一个 Configuration 属性,这里就是我们扩展添加额外的设置的地方。
查看 Configuration 属性,可以看到是 ConfigurationManager 范例,而 ConfigurationManager 实现了 IConfigurationBuilder 接口。
IConfigurationBuilder 接口定义如下:
- public interface IConfigurationBuilder{
- // 存放用于该 Builder 的 Sources 列表中各个元素的共享字典
- IDictionary<string, object> Properties { get; }
- // 已注册的 IConfigurationSource 列表
- IList<IConfigurationSource> Sources { get; }
- // 将 IConfigurationSource 添加到 Sources 中
- IConfigurationBuilder Add(IConfigurationSource source);
- // 通过 Sources 构建配置提供程序实例,并创建 IConfigurationRoot 实例
- IConfigurationRoot Build();
- }
复制代码 而它的实现类 ConfigurationBuilder 就是设置体系的入口。
- public class ConfigurationBuilder : IConfigurationBuilder
- {
- public IList<IConfigurationSource> Sources { get; } = new List<IConfigurationSource>();
- public IDictionary<string, object> Properties { get; } = new Dictionary<string, object>();
- public IConfigurationBuilder Add(IConfigurationSource source)
- {
- if (source == null)
- {
- throw new ArgumentNullException(nameof(source));
- }
- Sources.Add(source);
- return this;
- }
- public IConfigurationRoot Build()
- {
- var providers = new List<IConfigurationProvider>();
- foreach (IConfigurationSource source in Sources)
- {
- IConfigurationProvider provider = source.Build(this);
- providers.Add(provider);
- }
- return new ConfigurationRoot(providers);
- }
- }
复制代码 当我们启动一个 ASP.NET Core应用的时间是创建并启动了一个Web主机,由 Web 主机来启动并管理我们的应用的生命周期,在这个过程中会默认添加一些设置提供步伐,加载一些设置信息。这些操纵就在以下代码中:
- var builder = WebApplication.CreateBuilder(args);
复制代码 .NET Core 框架下的主机除了适用于 Web 应用的 Web 主机之外,尚有通用主机。若是在平常的控制台应用步伐,想要通过主机启动应用,并使用设置体系可用以下方式:
- using IHost host = Host.CreateDefaultBuilder(args).Build();
- host.Run();
复制代码 主机这块就先稍微了解以下,反面还会有专门的文章去先容。除了通过主机的方式使用设置体系之外,我们也可以直接通过 ConfigurationBuilder 类构建,如下:
- IConfiguration config = new ConfigurationBuilder()
- .AddJsonFile("appsettings.json")
- .Build();
- config.GetValue<string>("Logging:LogLevel:Default");
复制代码 这里必要引入相应的 Nuget 包,比方使用 ConfigurationBinder 相干的扩展方法就要引入 Microsoft.Extensions.Configuration.Binder Nuget包,使用 Json 格式设置文件就要引入Microsoft.Extensions.Configuration.Json Nuget包,该Nuget 包中包含 AddJsonFile 扩展方法,通过指定文件路径添加相应的设置文件到设置体系中。
设置文件多种多样,比较常用的都有 Json 、xml、ini、yaml 等多种格式,甚至设置信息不一定存储在文件之中。.NET Core 设置体系对各种泉源的设置信息进行了抽象,不同泉源只要提供相应的设置提供步伐即可,也就是我们上面在 IConfigurationRoot 接口中看到的 IConfigurationProvider 接口的实现类。设置提供步伐内部对不同泉源不同格式的设置信息进行加载、革新,并提供同一的访问方式,也就是键值对,实际上所有的设置信息最终会以键值对的方式被读取到内存中的 Dictionary 对象中。
我们要添加不同范例不同泉源的设置信息,只必要通过 IConfigurationBuilder 实现类对象添加不同的设置提供步伐即可。在 ASP.NET Core 应用之中,可以通过以下方式进行添加:
- // 添加一个xml配置文件,并加入到配置系统中
- var configirationFilePath = Path.Combine(Directory.GetCurrentDirectory(), "xxx.xml");
- builder.Configuration.AddXmlFile(configirationFilePath);
复制代码 也可以通过以下方式:
- builder.WebHost.ConfigureAppConfiguration(builder =>
- {
- builder.AddXmlFile("");
- });
复制代码 这两种方式是一样的效果的,只不过具体的实现类不同,ConfigureAppConfiguration 可以将原有的设置提供步伐清空,而 builder.Configuration 则不行,只能往集合反面继承添加。
参考文章:
ASP.NET Core 中的设置 | Microsoft Learn
设置 - .NET | Microsoft Learn
理解ASP.NET Core - 设置(Configuration)
ASP.NET Core 系列总结:
目录:ASP.NET Core 系列总结
上一篇:ASP.NET Core - 设置体系之设置读取
下一篇:ASP.NET Core — 设置体系之设置提供步伐
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |