首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在绑定对象数组时配置服务?

如何在绑定对象数组时配置服务?
EN

Stack Overflow用户
提问于 2017-07-01 04:18:59
回答 1查看 323关注 0票数 0

我将一个json字符串附加到VCAP_SERVICES环境变量,如下所示:

代码语言:javascript
复制
{
"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.csConfigureServices中,当我运行Configuration.GetSection("redislabs").AsEnumerable()时,我得到的结果如下所示:

我有几个options类,如下所示:

代码语言:javascript
复制
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; }
}

我的问题是,我该如何在这样的东西上执行绑定呢?绑定对象数组是可能的吗?

我试过了:

代码语言:javascript
复制
var redislabs = new List<RedisLab>();
Configuration.GetSection("redislabs").Bind(redislabs);

代码语言:javascript
复制
services.Configure<RedisLabs>(Configuration);

还有一些其他的方法。似乎什么都不起作用。

停一下,谢谢。

EN

回答 1

Stack Overflow用户

发布于 2017-07-02 21:17:49

给定您的json文件和类,这应该可以工作(将顶级部分绑定到包含数组的类的实例):

代码语言:javascript
复制
var redisLabs = new RedisLabs();
Configuration.Bind(redisLabs);

这也是可行的:

代码语言:javascript
复制
services.Configure<RedisLabs>(Configuration);
...
var rlOptions = app.ApplicationServices.GetRequiredService<IOptions<RedisLabs>>();
var redisLabs = rlOptions.Value;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44854264

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档