有没有办法将不同名称的环境变量映射到 IOptions<T> 实现模式?



给定一个使用HostBuilder的.NET Core项目,以及选项模式,有没有办法将特定的环境变量映射到我的选项的属性。

假设我的期权类如下所示:

class MyOptions
{
    public string MyFirstValue { get; set; }
    public string MySecondValue { get; set; }
}

我的appsettings.json文件现在可以包含名为 MyFirstValueMySecondValue(不区分大小写)的值,并且还可以位于子部分中。但是,如果可选环境变量可以覆盖这些值,但它们的名称与属性不匹配,该怎么办?假设第一个可以被MY_SPECIAL_FIRST_VALUE覆盖?有什么方法可以配置我的构建器来考虑这一点?

开箱即用,无法执行此操作,因为环境变量提供程序不支持它。它需要环境变量名称的模式,其中每个级别由双下划线分隔,例如 SOME__THING__PROPERTY .

在启动环境变量提供程序启动之前的某个时间点,您可以读取自定义环境变量的值并设置适当的下划线变量,也可以按照注释中的建议使用委托。

另一种选择是编写自己的提供程序,也许对现有提供程序进行子类化,但允许自定义环境变量。这显然涉及更多。

相关内容

最新更新