我将一个json字符串附加到VCAP_SERVICES环境变量,如下所示:
{
"redislabs": [
{
"credentials": {
"host": "redis-1756.pcfredissb2.com",
"ip_list": [
"10.999.46.999"
],
"password": "cz(2u",
"port": 1756
},
"syslog_drain_url": null,
"volume_mounts": [],
"label": "redislabs",
"provider": null,
"plan": "simple-redis",
"name": "sdsredis2",
"tags": [
"redislabs"
]
},
{
"credentials": {
"host": "redis-13610.pcfredis.com",
"ip_list": [
"10.999.46.9999"
],
"password": "n-C*",
"port": 13610
},
"syslog_drain_url": null,
"volume_mounts": [],
"label": "redislabs",
"provider": null,
"plan": "simple-redis",
"name": "sdsredis",
"tags": [
"redislabs"
]
}
]
}在Startup.cs的ConfigureServices中,当我运行Configuration.GetSection("redislabs").AsEnumerable()时,我得到的结果如下所示:

我有几个options类,如下所示:
public class RedisLabs
{
public RedisLab[] redislabs { get; set; }
}
public class RedisLab
{
public Credentials credentials { get; set; }
public object syslog_drain_url { get; set; }
public object[] volume_mounts { get; set; }
public string label { get; set; }
public object provider { get; set; }
public string plan { get; set; }
public string name { get; set; }
public string[] tags { get; set; }
}
public class Credentials
{
public string host { get; set; }
public string[] ip_list { get; set; }
public string password { get; set; }
public int port { get; set; }
}我的问题是,我该如何在这样的东西上执行绑定呢?绑定对象数组是可能的吗?
我试过了:
var redislabs = new List<RedisLab>();
Configuration.GetSection("redislabs").Bind(redislabs);和
services.Configure<RedisLabs>(Configuration);还有一些其他的方法。似乎什么都不起作用。
停一下,谢谢。
发布于 2017-07-02 21:17:49
给定您的json文件和类,这应该可以工作(将顶级部分绑定到包含数组的类的实例):
var redisLabs = new RedisLabs();
Configuration.Bind(redisLabs);这也是可行的:
services.Configure<RedisLabs>(Configuration);
...
var rlOptions = app.ApplicationServices.GetRequiredService<IOptions<RedisLabs>>();
var redisLabs = rlOptions.Value;https://stackoverflow.com/questions/44854264
复制相似问题