如何在appsettings.json中指定必填字段?

时间:2019-05-16 16:00:35

标签: c# .net asp.net-core .net-core configuration

我的appsettings.json可以正常工作,只是它不允许我控制是否存在值。

今天我遇到了一个错误,因为我忘记在配置中放一个变量,但没有说。它只是使用默认字段值,在本地可以,但是在另一台计算机上崩溃了。

我提供了以下解决方案:

private static T Deserialize<T>(IConfigurationRoot configuration, string sectionName) where T : new()
{
    var result = new T();
    var configurationSection = configuration.GetSection(sectionName);
    configurationSection.Bind(result);
    foreach (var propertyInfo in typeof(T).GetProperties())
    {
        var value = propertyInfo.GetValue(result);
        if (value == null || value is string s && s == "")
        {
            throw new ArgumentException($"All configuration fields are required but {propertyInfo.Name} is missing");
        }
    }
    return result;
}

但是它显然不适用于值类型。它也不适用于有意为null或空字符串的值。我需要原始的JSON表示形式或一些API来验证字段的存在,但找不到。

我试图从各节中获取JSON以通过Newtonsoft.Json进行解析,但再次失败。

有什么建议可以做到吗?

0 个答案:

没有答案