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

How to check if config section exists?

我正在尝试为我的 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();
}

问题是:

如何在绑定前确定配置部分 "NotHere" 是否确实在 json 文件中?

如果配置中不存在该部分,则使用 GetValue 方法代替 GetSection returns 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;
    }
}