代码之家  ›  专栏  ›  技术社区  ›  Martin Plante

有没有一种方法可以将不同命名的环境变量映射到IOptions<T>实现模式?

  •  1
  • Martin Plante  · 技术社区  · 6 年前

    options pattern ,是否有方法将特定环境变量映射到“我的选项”属性。

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

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

    1 回复  |  直到 6 年前
        1
  •  2
  •   Kit    6 年前

    environment variable provider 不支持它。它需要环境变量名的模式,其中每个级别由双下划线分隔,例如。 SOME__THING__PROPERTY .

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

    另一个选择是编写自己的提供者,可能是子类化 the existing one 但是允许自定义环境变量。这显然有点复杂。