Philiprehberger.ConfigValidator
0.1.7
dotnet add package Philiprehberger.ConfigValidator --version 0.1.7
NuGet\Install-Package Philiprehberger.ConfigValidator -Version 0.1.7
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Philiprehberger.ConfigValidator" Version="0.1.7" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Philiprehberger.ConfigValidator" Version="0.1.7" />
<PackageReference Include="Philiprehberger.ConfigValidator" />
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Philiprehberger.ConfigValidator --version 0.1.7
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: Philiprehberger.ConfigValidator, 0.1.7"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package Philiprehberger.ConfigValidator@0.1.7
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Philiprehberger.ConfigValidator&version=0.1.7
#tool nuget:?package=Philiprehberger.ConfigValidator&version=0.1.7
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
Philiprehberger.ConfigValidator
Validate appsettings.json configuration sections at startup with attribute-based rules.
Installation
dotnet add package Philiprehberger.ConfigValidator
Usage
Define your options class with validation attributes
using Philiprehberger.ConfigValidator;
public class SmtpOptions
{
[Required]
public string Host { get; set; } = "";
[Range(1, 65535)]
public int Port { get; set; }
[Required]
[Pattern(@"^[^@]+@[^@]+\.[^@]+$")]
public string FromAddress { get; set; } = "";
[MinLength(1)]
[MaxLength(100)]
public string Username { get; set; } = "";
}
Register and validate at startup (fail-fast)
using Philiprehberger.ConfigValidator;
var builder = WebApplication.CreateBuilder(args);
builder.Services.ValidateConfiguration<SmtpOptions>(
builder.Configuration,
"Smtp");
var app = builder.Build();
app.Run();
If any validation rule fails, a ConfigValidationException is thrown immediately at startup with all errors listed.
Check without throwing
var errors = ConfigValidator.Check<SmtpOptions>(configuration, "Smtp");
foreach (var error in errors)
{
Console.WriteLine(error);
}
API
Attributes
| Attribute | Target | Description |
|---|---|---|
[Required] |
Property | Value must be present and non-null/non-empty |
[Pattern(regex)] |
String property | Value must match the regular expression |
[Range(min, max)] |
Numeric property | Value must be within range (inclusive) |
[MinLength(n)] |
String/collection | Length/count must be at least n |
[MaxLength(n)] |
String/collection | Length/count must be at most n |
ConfigValidator
| Method | Description |
|---|---|
Validate<T>(IConfiguration, string) |
Binds section to T, validates, throws ConfigValidationException on failure |
Check<T>(IConfiguration, string) |
Binds section to T, validates, returns list of error strings |
ConfigValidatorExtensions
| Method | Description |
|---|---|
ValidateConfiguration<T>(IServiceCollection, IConfiguration, string) |
Validates at registration time and registers the bound instance as a singleton |
ConfigValidationException
| Member | Description |
|---|---|
Errors |
IReadOnlyList<string> of all validation error messages |
Message |
Formatted string listing all errors |
Development
dotnet build src/Philiprehberger.ConfigValidator.csproj --configuration Release
Support
If you find this project useful:
License
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. 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. |
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
-
net8.0
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.