У меня есть 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;
}
Но это явно не будет работать для типов значений.Он также не будет работать со значениями, которые намеренно являются пустыми или пустыми.Мне нужно оригинальное представление JSON или какой-нибудь API для проверки наличия поля, но я не нашел его.
Я пытался получить JSON из разделов, чтобы проанализировать его с помощью Newtonsoft.Json
, но снова безуспешно.
Есть предложения, как это можно сделать?