我的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
进行解析,但再次失败。
有什么建议可以做到吗?