如何检查配置部分是否存在?

时间:2017-03-30 05:51:50

标签: c# asp.net-core .net-core app-config

我正在尝试为我的dotnet核心项目实施一个简单的配置服务。

如果在添加的任何配置文件中没有请求配置部分,我想return null

我目前检索配置部分的代码:

private static IConfigurationRoot _configuration { get; set; }
private static IConfigurationBuilder _builder;

public JsonConfigService()
{
   _builder = new ConfigurationBuilder();

}

public T GetConfigModel<T>(string name) where T : new()
{
    if (string.IsNullOrWhiteSpace(name))
        return default(T);

    var section = _configuration.GetSection(name);

    if (section == null || string.IsNullOrWhiteSpace(section.Value))
        return default(T);

    var value = new T();
    section.Bind(value);

    return value;
} 

public void RegisterSource(string source)
{
    _builder.AddJsonFile(source);
    _configuration = _builder.Build();
}
问题是:

  • 只要请求的配置部分在配置中可用,部分就永远不会为空。
  • section.Value始终为null(仅针对复杂类型进行测试)

如何在绑定之前找出配置部分“NotHere”是否实际上在json文件中?

1 个答案:

答案 0 :(得分:0)

如果配置中不存在该部分,则使用GetValue方法而不是GetSection会返回null

用法:

public T GetConfigModel<T>(string name) where T : new()
{
    if (string.IsNullOrWhiteSpace(name))
        return default(T);

    try
    {
        return _configuration.GetValue<T>(name);
    }
    catch (Exception ex)
    {
        throw ex;
    }
}