Reo.Core.ConfigValidation
10.0.30
See the version list below for details.
dotnet add package Reo.Core.ConfigValidation --version 10.0.30
NuGet\Install-Package Reo.Core.ConfigValidation -Version 10.0.30
<PackageReference Include="Reo.Core.ConfigValidation" Version="10.0.30" />
<PackageVersion Include="Reo.Core.ConfigValidation" Version="10.0.30" />
<PackageReference Include="Reo.Core.ConfigValidation" />
paket add Reo.Core.ConfigValidation --version 10.0.30
#r "nuget: Reo.Core.ConfigValidation, 10.0.30"
#:package Reo.Core.ConfigValidation@10.0.30
#addin nuget:?package=Reo.Core.ConfigValidation&version=10.0.30
#tool nuget:?package=Reo.Core.ConfigValidation&version=10.0.30
Reo.Core.ConfigValidation
Описание пакета
Пакет Reo.Core.ConfigValidation предназначен для проверки соответствия структуры конфигурации приложения заданным требованиям. Он позволяет:
- Обнаруживать отсутствующие разделы в конфигурации.
- Генерировать предупреждения о разделах, которые не требуются, но присутствуют в приложении.
- Использовать графы для сравнения структуры конфигурации из файла и текущей конфигурации приложения.
Пакет решает проблему несоответствия между ожидаемой и фактической структурой конфигурации, что особенно важно для приложений с высокими требованиями к надежности и корректности настроек.
Основные компоненты
1. IMatchingConfigValidatorService
Интерфейс, определяющий методы для проверки конфигурации. Основной метод: Validate() — выполняет сравнение структуры
конфигурации.
2. MatchingConfigValidatorService
Реализация интерфейса IMatchingConfigValidatorService. Отвечает за:
- Создание графов конфигурации.
- Сравнение структуры конфигурации и генерацию ошибок/предупреждений.
3. ConfigSectionGraph
Класс, представляющий структуру конфигурации в виде графа. Содержит методы для:
- Сравнения графов.
- Получения списка отсутствующих разделов.
- Формирования пути к разделам (например,
SectionA--SectionB).
4. IConfigSectionGraphCreator
Интерфейс для создания графа конфигурации. Используется для инкапсуляции логики построения графа.
5. ConfigValidatorSectionGraphBuilder
Реализация IConfigSectionGraphCreator, которая:
- Читает конфигурацию из файла (например, JSON).
- Строит граф на основе структуры этого файла.
6. SourceConfigSectionGraphBuilder
Реализация IConfigSectionGraphCreator, которая:
- Читает текущую конфигурацию приложения (например, из
appsettings.json). - Строит граф на основе этой конфигурации.
Требования
Совместимость с .NET
- .NET 8
Зависимости
Microsoft.Extensions.ConfigurationMicrosoft.Extensions.LoggingSystem.IO.Abstractions(для работы с файловой системой)
Установка
NuGet Package Manager
Install-Package Reo.Core.ConfigValidation
.NET CLI
dotnet add package Reo.Core.ConfigValidation
Настройка
Регистрация в DI-контейнере (ASP.NET Core)
Добавьте сервис в Startup.cs или Program.cs:
services.AddSingleton<IMatchingConfigValidatorService, MatchingConfigValidatorService>();
Конфигурационные параметры
- Создайте файл
required-config.jsonс описанием обязательных разделов:
{
"RequiredSections": [
"SectionA",
"SectionB/SectionC"
]
}
- Укажите путь к файлу в
appsettings.json:
{
"ConfigValidation": {
"RequiredConfigFilePath": "path/to/required-config.json"
}
}
Использование
Пример 1: Проверка конфигурации
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}");
}
}
}
Пример 2: Структура файла required-config.json
{
"RequiredSections": [
"Database/ConnectionStrings",
"Logging/LogLevel",
"Services/ExternalApi"
]
}
Пример 3: Результаты проверки
Если в appsettings.json отсутствует раздел Database/ConnectionStrings, будет сгенерировано исключение:
throw new RequiredConfigSectionNotFoundException(new List<string> { "Database--ConnectionStrings" });
Лицензия
Данный пакет распространяется под лицензией MIT.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- FluentValidation (>= 12.1.1)
- FluentValidation.AspNetCore (>= 11.3.1)
- JetBrains.Annotations (>= 2025.2.4)
- Microsoft.Extensions.Configuration (>= 10.0.2)
- Microsoft.Extensions.Configuration.Abstractions (>= 10.0.2)
- Microsoft.Extensions.Configuration.Binder (>= 10.0.2)
- Microsoft.Extensions.DependencyInjection (>= 10.0.2)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 10.0.2)
- Microsoft.Extensions.Hosting.Abstractions (>= 10.0.2)
- Microsoft.Extensions.Logging.Abstractions (>= 10.0.2)
- Microsoft.Extensions.Options (>= 10.0.2)
- Microsoft.Extensions.Options.ConfigurationExtensions (>= 10.0.2)
- Reo.Core.Validation (>= 10.0.30)
- stbychkov.AutoLoggerMessage (>= 1.0.15)
- Swashbuckle.AspNetCore (>= 10.1.2)
- System.IO.Abstractions (>= 22.1.0)
- YamlDotNet.NetCore (>= 1.0.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 10.0.33 | 0 | 2/13/2026 |
| 10.0.32 | 0 | 2/13/2026 |
| 10.0.31 | 11 | 2/13/2026 |
| 10.0.30 | 28 | 2/12/2026 |
| 10.0.29 | 33 | 2/12/2026 |
| 10.0.28 | 38 | 2/11/2026 |
| 10.0.27 | 44 | 2/11/2026 |
| 10.0.26 | 80 | 2/9/2026 |
| 10.0.25 | 80 | 2/9/2026 |
| 10.0.24 | 81 | 2/9/2026 |
| 10.0.23 | 77 | 2/9/2026 |
| 10.0.22 | 75 | 2/9/2026 |
| 10.0.21 | 77 | 2/9/2026 |
| 10.0.20 | 76 | 2/9/2026 |
| 10.0.15 | 78 | 2/6/2026 |
| 10.0.14 | 80 | 2/6/2026 |
| 10.0.13 | 83 | 2/4/2026 |
| 10.0.12 | 84 | 2/3/2026 |
| 10.0.11 | 90 | 2/2/2026 |
| 10.0.10 | 85 | 1/29/2026 |