定位配置提供者

时间:2019-07-12 12:06:39

标签: c# configuration configserver steeltoe

我正在尝试从配置服务器获取设置并将其映射到我的对象。 但是class CategorySerializer(serializers.ModelSerializer): interest_set = InterestSerializer(many=True) class Meta: model = Category fields = ['id', 'category', 'interest_set'] class ProfileSerializer(serializers.ModelSerializer): category_set = CategorySerializer(many=True) class Meta: model = Profile fields = [] 返回了IConfiguration的集合,然后我必须使用ProvidersGetSection方法来获取配置设置。

例如

Startup.cs

GetChildern

以上内容为我提供了一个特定的部分,并能够将其映射到我的public void ConfigureServices(IServiceCollection services) { services.Configure<MyConfigurations>(Configuration.GetSection("spring:cloud:config")); } 类属性。

不过,我需要定位更多部分。我不想做MyConfiguration来让他们一个接一个。

我可以使用什么来从所需的提供程序(例如.GetSection)中获取集合,以便可以将其映射到配置类中定义的属性?

1 个答案:

答案 0 :(得分:1)

您可以为您的配置创建一个映射类,如下所示:

public class ConfigSettings
{
    public string ConfigSetting1 { get; set; }
    public string ConfigSetting2 { get; set; }
    public string ConfigSetting3 { get; set; }
    public SubConfigSettings1 SubConfigSettings1 { get; set; }
}

public class SubConfigSettings1 
{
    public string SubConfigSetting1 { get; set; }
    public string SubConfigSetting2 { get; set; }
}

并使用

获取它们
var setting = Configuration.Get<ConfigSettings>();

编辑:

如果您有此钢趾配置

{
  "spring": {
    "cloud": {
      "config": {
        "uri": "http://localhost:8888"
      }
    }
  },
  "Logging": {
    "IncludeScopes": true,
    "LogLevel": {
      "Default": "Debug",
      "System": "Information",
      "Microsoft": "Information"
    },
    "Console": {
      "LogLevel": {
        "Default": "Debug",
        "System": "Information",
        "Microsoft": "Information"
      }
    }
  }
}

您可以像这样定义ConfigSettings类。

public class ConfigSettings
{
    public Spring spring { get; set; }
    public Logging Logging { get; set; }
}

public class Spring
{
    public Cloud cloud { get; set; }
}

public class Cloud
{
    public Config config { get; set; }
}

public class Config
{
    public string uri { get; set; }
}

public class Logging
{
    public bool IncludeScopes { get; set; }
    public Loglevel LogLevel { get; set; }
    public Console Console { get; set; }
}

public class Console
{
    public Loglevel LogLevel { get; set; }
}

public class Loglevel
{
    public string Default { get; set; }
    public string System { get; set; }
    public string Microsoft { get; set; }
}

并像这样使用。

services.Configure<ConfigSettings>(Configuration);

,然后使用以下内容访问uri部分。

var settings = Configuration.Get<ConfigSettings>();
string springCloudConfigUri = settings.spring.cloud.config.uri;

在这里,配置是IConfiguration