在映射要配置的类中与我要构建的类不同的名称时,我遇到了麻烦。
我的配置文件:
"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”
如何将属性映射到配置文件中的名称?
答案 0 :(得分:1)
配置值到属性的映射是基本投影。本身无法自定义映射。但是,您可以为强类型的配置创建自定义注册:
services.Configure<RestaurantConfiguration>(c => {
var config = Configuration.GetSection($"{restaurantNumber}/FOEConfiguration");
c.TimeoutInMs = config.GetValue<int>("FOE.TimeoutInMs");
// etc.
});