Package Description
$ dotnet add package Reo.Core.ConfigValidationПакет Reo.Core.ConfigValidation предназначен для проверки соответствия структуры конфигурации приложения заданным требованиям. Он позволяет:
Пакет решает проблему несоответствия между ожидаемой и фактической структурой конфигурации, что особенно важно для приложений с высокими требованиями к надежности и корректности настроек.
Интерфейс, определяющий методы для проверки конфигурации. Основной метод: Validate() — выполняет сравнение структуры
конфигурации.
Реализация интерфейса IMatchingConfigValidatorService. Отвечает за:
Класс, представляющий структуру конфигурации в виде графа. Содержит методы для:
SectionA--SectionB).Интерфейс для создания графа конфигурации. Используется для инкапсуляции логики построения графа.
Реализация IConfigSectionGraphCreator, которая:
Реализация IConfigSectionGraphCreator, которая:
appsettings.json).Microsoft.Extensions.ConfigurationMicrosoft.Extensions.LoggingSystem.IO.Abstractions (для работы с файловой системой)Install-Package Reo.Core.ConfigValidation
dotnet add package Reo.Core.ConfigValidation
Добавьте сервис в Startup.cs или Program.cs:
services.AddSingleton<IMatchingConfigValidatorService, MatchingConfigValidatorService>();
required-config.json с описанием обязательных разделов:{
"RequiredSections": [
"SectionA",
"SectionB/SectionC"
]
}
appsettings.json:{
"ConfigValidation": {
"RequiredConfigFilePath": "path/to/required-config.json"
}
}
public class ConfigValidator
{
private readonly IMatchingConfigValidatorService _validator;
public ConfigValidator(IMatchingConfigValidatorService validator)
{
_validator = validator;
}
public void ValidateConfiguration()
{
try
{
_validator.Validate();
Console.WriteLine("Конфигурация прошла проверку!");
}
catch (RequiredConfigSectionNotFoundException ex)
{
Console.WriteLine($"Ошибка: {ex.Message}");
}
}
}
required-config.json{
"RequiredSections": [
"Database/ConnectionStrings",
"Logging/LogLevel",
"Services/ExternalApi"
]
}
Если в appsettings.json отсутствует раздел Database/ConnectionStrings, будет сгенерировано исключение:
throw new RequiredConfigSectionNotFoundException(new List<string> { "Database--ConnectionStrings" });
Этот пакет распространяется под лицензией MIT License.
См. файл LICENSE для получения подробной информации.