Как мне указать обязательные поля в appsettings.json? - PullRequest
0 голосов
/ 16 мая 2019

У меня есть 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, но снова безуспешно.

Есть предложения, как это можно сделать?

...