繁体   English   中英

Asp.Net Core 3.1 多个依赖的自定义配置提供程序

[英]Asp.Net Core 3.1 Multiple dependent custom configuration providers

要从自定义配置提供程序开始,我们将以下代码添加到 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"
})

但是你为什么要这样做呢? 在一个自定义配置提供程序中处理所有这些逻辑不是更好吗? 获取您需要的数据,然后相应地采取行动? 您能否在这里解释一下您要解决的问题?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM