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

时间:2019-01-25 15:24:24

标签: .net-core

鉴于使用HostBuilder和。options pattern的.NET Core项目,可以将特定的环境变量映射到我的选项的属性。

让我们说我的选项类如下:

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

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

1 个答案:

答案 0 :(得分:2)

由于environment variable provider不支持,因此无法立即使用。它需要一个环境变量名称的模式,其中每个级别都由双下划线分隔,例如SOME__THING__PROPERTY

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

另一种选择是编写自己的提供程序,也许可以继承the existing one的类,但允许自定义环境变量。显然,这涉及更多。