如何使用GetSection获取配置JSON中AzureServiceBusTopic的配对键值对
解决方案
推荐方案:强类型绑定(最简洁不易出错)
先定义一个和配置结构匹配的实体类:
public class TopicConsumptionOption { public string SubscriptionName { get; set; } public string TopicName { get; set; } }
直接通过配置绑定读取整个数组即可自动完成配对:
List<TopicConsumptionOption> pairedConfigs = this.configuration .GetSection("AzureServiceBusTopic:TopicsToConsume") .Get<List<TopicConsumptionOption>>();
读取后的pairedConfigs就是你需要的结构:索引0对应sub1+topic1,索引1对应sub2+topic2,可以直接使用。
手动读取方案(不定义类的场景)
如果你不想额外定义实体类,修正原有代码的逻辑错误即可手动拼接配对对象:
原有代码错误点:你获取的
topicToConsumeConfig已经是数组的所有子元素,每个子元素本身就包含SubscriptionName和TopicName两个字段,不需要再查询TopicsToConsume子节点。
var topicConfigNodes = this.configuration .GetSection("AzureServiceBusTopic:TopicsToConsume") .GetChildren(); // 生成配对的匿名类型集合 var pairedConfigs = topicConfigNodes.Select(node => new { SubscriptionName = node.GetSection("SubscriptionName").Value, TopicName = node.GetSection("TopicName").Value }).ToList(); // 按需拆分赋值给原有字段 this.topicToConsume = pairedConfigs.Select(p => p.TopicName).ToList(); this.subscriptionName = pairedConfigs.Select(p => p.SubscriptionName).ToList();
内容的提问来源于stack exchange,提问作者moris62
相关产品推荐
相关产品推荐

