Hexalith.Commons.Configurations
1.66.4
See the version list below for details.
dotnet add package Hexalith.Commons.Configurations --version 1.66.4
NuGet\Install-Package Hexalith.Commons.Configurations -Version 1.66.4
<PackageReference Include="Hexalith.Commons.Configurations" Version="1.66.4" />
<PackageVersion Include="Hexalith.Commons.Configurations" Version="1.66.4" />
<PackageReference Include="Hexalith.Commons.Configurations" />
paket add Hexalith.Commons.Configurations --version 1.66.4
#r "nuget: Hexalith.Commons.Configurations, 1.66.4"
#:package Hexalith.Commons.Configurations@1.66.4
#addin nuget:?package=Hexalith.Commons.Configurations&version=1.66.4
#tool nuget:?package=Hexalith.Commons.Configurations&version=1.66.4
Hexalith.Commons.Configurations
Overview
Hexalith.Commons.Configurations is a .NET library that provides utilities for handling configuration settings in .NET applications. It simplifies the process of retrieving, validating, and managing configuration settings using Microsoft's configuration and options patterns.
Features
- Interface-based configuration settings with
ISettings - Helper methods for retrieving settings from configuration
- FluentValidation integration for validating configuration options
- Exception handling for configuration errors
- Support for Microsoft's Options pattern
Installation
Package Manager Console
Install-Package Hexalith.Commons.Configurations
.NET CLI
dotnet add package Hexalith.Commons.Configurations
Usage
Defining Settings
using Hexalith.Commons.Configurations;
public class MyAppSettings : ISettings
{
public string ConnectionString { get; set; } = string.Empty;
public int Timeout { get; set; } = 30;
public static string ConfigurationName() => "MyApp";
}
Retrieving Settings
using Hexalith.Commons.Configurations;
// Get settings using the helper method
MyAppSettings settings = configuration.GetSettings<MyAppSettings>();
Dependency Injection
Add the settings to the service collection and configure them using the ConfigureSettings method.
using Hexalith.Commons.Configurations;
// Register services
builder.Services.ConfigureSettings<MyAppSettings>(builder.Configuration);
Get a comprehensive error message on the invalid setting in your application.
using Hexalith.Commons.Configurations;
public class MyClass
{
private readonly string _connectionString;
public MyClass(IOptions<MyAppSettings> options)
{
// Check if the options are valid and throw a detailed exception if not
SettingsException<MyAppSettings>.ThrowIfUndefined(options.Value.ConnectionString);
_connectionString = options.Value.ConnectionString;
}
}
Validating Settings with FluentValidation
using FluentValidation;
using Hexalith.Commons.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Options;
// Create a validator for your settings
public class MyAppSettingsValidator : AbstractValidator<MyAppSettings>
{
public MyAppSettingsValidator()
{
RuleFor(x => x.ConnectionString).NotEmpty();
RuleFor(x => x.Timeout).GreaterThan(0);
}
}
// Register settings with validation
services.ConfigureSettings<MyAppSettings>(configuration);
ISettings Interface
public interface ISettings
{
// The name of the configuration section. For example, "MyApp:MySettings".
static abstract string ConfigurationName();
}
The ISettings interface defines a contract for configuration settings classes. It requires implementing a static ConfigurationName() method that returns the name of the configuration section.
SettingsHelper Class
public static class SettingsHelper
{
public static TSettings GetSettings<TSettings>(this IConfiguration configuration)
where TSettings : class, ISettings, new();
}
The SettingsHelper class provides extension methods for retrieving settings from configuration.
FluentValidateOptions Class
public class FluentValidateOptions<TOptions> : IValidateOptions<TOptions>
where TOptions : class
{
public FluentValidateOptions(string? name, IServiceProvider provider);
public ValidateOptionsResult Validate(string? name, TOptions options);
}
The FluentValidateOptions class implements IValidateOptions<TOptions> to provide FluentValidation integration for the Options pattern.
Dependencies
- FluentValidation.DependencyInjectionExtensions
- Microsoft.Extensions.Configuration.Binder
- Microsoft.Extensions.Logging.Abstractions
- Microsoft.Extensions.Options
- Microsoft.Extensions.Options.ConfigurationExtensions
- Microsoft.Extensions.Options.DataAnnotations
License
This project is licensed under the MIT License - see the LICENSE file in the project root for details.
Links
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net9.0 is compatible. 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. |
-
net9.0
- FluentValidation.DependencyInjectionExtensions (>= 11.11.0)
- Microsoft.Extensions.Configuration.Binder (>= 9.0.3)
- Microsoft.Extensions.Logging.Abstractions (>= 9.0.3)
- Microsoft.Extensions.Options (>= 9.0.3)
- Microsoft.Extensions.Options.ConfigurationExtensions (>= 9.0.3)
- Microsoft.Extensions.Options.DataAnnotations (>= 9.0.3)
NuGet packages (6)
Showing the top 5 NuGet packages that depend on Hexalith.Commons.Configurations:
| Package | Downloads |
|---|---|
|
Hexalith.Security.Application
Hexalith is a set of libraries to build an application with micro-service architecture. |
|
|
Hexalith.IdentityStores.Abstractions
Hexalith is a set of libraries to build an application with micro-service architecture. |
|
|
Hexalith.DaprIdentityStore.Abstractions
Hexalith is a set of libraries to build a micro-service architecture. |
|
|
Hexalith.KeyValueStorages.Abstractions
Hexalith KeyValueStorages utilities and helpers |
|
|
Hexalith.KeyValueStorages.Files
Hexalith KeyValueStorages utilities and helpers |
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 2.13.0 | 110 | 3/14/2026 |
| 2.12.0 | 94 | 3/14/2026 |
| 2.11.0 | 88 | 3/14/2026 |
| 2.10.0 | 87 | 3/14/2026 |
| 2.9.0 | 92 | 3/14/2026 |
| 2.8.0 | 113 | 1/10/2026 |
| 2.7.0 | 312 | 12/23/2025 |
| 2.6.1 | 199 | 12/23/2025 |
| 2.6.0 | 300 | 12/22/2025 |
| 2.5.0 | 166 | 12/21/2025 |
| 2.4.1 | 172 | 12/21/2025 |
| 2.4.0 | 167 | 12/21/2025 |
| 2.3.0 | 171 | 12/21/2025 |
| 2.2.2 | 635 | 12/6/2025 |
| 2.2.1 | 379 | 11/30/2025 |
| 2.2.0 | 653 | 11/13/2025 |
| 2.1.9 | 204 | 10/14/2025 |
| 2.1.8 | 204 | 10/13/2025 |
| 2.1.7 | 605 | 9/20/2025 |
| 1.66.4 | 270 | 4/10/2025 |