以配置提供者为目标
Target a configuration provider
我正在尝试从我的配置服务器获取设置并将其映射到我的对象。
但是 IConfiguration
返回给我一个 Providers
的集合,然后我必须使用 GetSection
或 GetChildern
方法来获取配置设置。
例如
Startup.cs
public void ConfigureServices(IServiceCollection services)
{
services.Configure<MyConfigurations>(Configuration.GetSection("spring:cloud:config"));
}
以上为我提供了一个特定的部分,并且能够将其映射到我的 MyConfiguration
class 属性。
但是我需要定位更多部分。我不想做 .GetSection
来一一获取它们。
有什么我可以用来从所需提供程序获取集合的东西,即 SteelToe
以便我可以将其映射到我的配置 class 中定义的属性?
您可以为您的配置创建映射 class,如下所示:
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 class。
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;
这里的Configuration是IConfiguration
我正在尝试从我的配置服务器获取设置并将其映射到我的对象。
但是 IConfiguration
返回给我一个 Providers
的集合,然后我必须使用 GetSection
或 GetChildern
方法来获取配置设置。
例如
Startup.cs
public void ConfigureServices(IServiceCollection services)
{
services.Configure<MyConfigurations>(Configuration.GetSection("spring:cloud:config"));
}
以上为我提供了一个特定的部分,并且能够将其映射到我的 MyConfiguration
class 属性。
但是我需要定位更多部分。我不想做 .GetSection
来一一获取它们。
有什么我可以用来从所需提供程序获取集合的东西,即 SteelToe
以便我可以将其映射到我的配置 class 中定义的属性?
您可以为您的配置创建映射 class,如下所示:
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 class。
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;
这里的Configuration是IConfiguration