c# - Asp.Net Core 3.1 多个依赖的自定义配置提供程序
问题描述
要从自定义配置提供程序开始,我们会将此代码添加到 Program.CreateHostBuilder:
.ConfigureAppConfiguration((builderContext, config) =>
{
config.AddMyConfiguration(options =>
{
options.ConnectionString = "Data Source=sqlite.db";
options.Query = @"SELECT Key, Value FROM SYS_CONFIGS";
});
});
(只是一个例子,不是我实际在做什么)。但是,如果我们需要添加另一个自定义配置提供程序,并且对远程数据的请求取决于来自第一源的值已经可用怎么办?因此,除了上述内容之外,还出现在 Program.CreateHostBuilder 中:
.ConfigureAppConfiguration((builderContext, config) =>
{
config.AddMySecondConfiguration(options =>
{
options.ConnectionString = "<some value received from first custom config>";
options.Query = "<some value received from first custom config>";
});
});
解决方案
我认为您需要在第二个配置提供程序中构建 configurationBuilder。
尝试这个:
.ConfigureAppConfiguration((context, configurationBuilder) =>
{
configurationBuilder.AddInMemoryCollection(new List<KeyValuePair<string, string>>
{
new KeyValuePair<string, string>("first", "value")
});
configurationBuilder.AddInMemoryCollection(new List<KeyValuePair<string, string>>
{
new KeyValuePair<string, string>("second", configurationBuilder.Build().GetValue<string>("first"))
});
var test = configurationBuilder.Build().GetValue<string>("second"); // "value"
})
但是你为什么要这样做呢?在一个自定义配置提供程序中处理所有这些逻辑不是更好吗?获取您需要的数据然后采取相应的行动?您能否在这里解释一下您要解决的问题?
推荐阅读
- vba - Word VBA,用于提供 ContentControl 放置在重复内容控件中的表格单元格的背景颜色
- python - Python 诅咒不显示某些字符
- php - Laravel 传递关系失败
- java - 更新后,Android Studio 无法找到 kotlin jar 请求目标的有效认证路径
- javascript - 如何制作过滤和映射特定数据以从数据库中的对象呈现的函数方法
- redis - 如何编写 lua 脚本或 redis 命令来根据值获取所有键?
- c# - C# 中的 ORDER BY SQL QUERY
- swift - webView完成加载Swift 5之前的加载器图像
- bash - 如何在 Shell 脚本中执行环境变量?
- android - 当我启动 sdkmanager 时,我得到 java.lang.NoClassDefFoundError: javax/xml/bind/annotation/XmlSchema 异常