如何通过使用.netCore中的IConfigurationSectio.Get映射属性名称?

时间:2019-01-31 12:49:16

标签: c# asp.net-core .net-core

在映射要配置的类中与我要构建的类不同的名称时,我遇到了麻烦。

我的配置文件:

"148/FOEConfiguration":{  
    "EndPointUrl1":"http://10.116.105.25:8088/RPC2",
    "EndPointUrl2":"http://10.116.105.25:8088/RPC2",
    "FoeVersion":"6",
    "CryptoId":"6",
    "CryptoKey":"test",
    "NumberOfRetries":3,
    "OrderVersion":"2",
    "FOE.PODName":"FOE0001",
    "FOE.TimeoutInMs":123,
    "FOE.IsReadySuccCacheTtl":0,
    "FOE.IsReadyStoreFailCacheTtl":0,
    "FOE.IsReadyOrderFailCacheTtl":0
   }

我在做

var section = _config.GetSection($"{restaurantNumber}/FOEConfiguration");
var restaurant = section.Get<RestaurantConfiguration>();

但是在RestaurantConfiguration中,属性名称为

public int TimeoutInMs { get; set; }

在配置文件中是“ FOE.TimeoutInMs”

如何将属性映射到配置文件中的名称?

1 个答案:

答案 0 :(得分:1)

配置值到属性的映射是基本投影。本身无法自定义映射。但是,您可以为强类型的配置创建自定义注册:

services.Configure<RestaurantConfiguration>(c => {
    var config = Configuration.GetSection($"{restaurantNumber}/FOEConfiguration");
    c.TimeoutInMs = config.GetValue<int>("FOE.TimeoutInMs");
    // etc.
});