Hexalith.Commons.Configurations
1.65.0
See the version list below for details.
dotnet add package Hexalith.Commons.Configurations --version 1.65.0
NuGet\Install-Package Hexalith.Commons.Configurations -Version 1.65.0
<PackageReference Include="Hexalith.Commons.Configurations" Version="1.65.0" />
<PackageVersion Include="Hexalith.Commons.Configurations" Version="1.65.0" />
<PackageReference Include="Hexalith.Commons.Configurations" />
paket add Hexalith.Commons.Configurations --version 1.65.0
#r "nuget: Hexalith.Commons.Configurations, 1.65.0"
#addin nuget:?package=Hexalith.Commons.Configurations&version=1.65.0
#tool nuget:?package=Hexalith.Commons.Configurations&version=1.65.0
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;
using Microsoft.Extensions.Configuration;
// Get configuration from appsettings.json
IConfiguration configuration = new ConfigurationBuilder()
.AddJsonFile("appsettings.json")
.Build();
// Get settings using the helper method
MyAppSettings settings = configuration.GetSettings<MyAppSettings>();
// Use the settings
Console.WriteLine($"Connection String: {settings.ConnectionString}");
Console.WriteLine($"Timeout: {settings.Timeout}");
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 services
var services = new ServiceCollection();
// Register configuration
services.AddSingleton<IConfiguration>(configuration);
// Register validator
services.AddSingleton<IValidator<MyAppSettings>, MyAppSettingsValidator>();
// Register settings with validation
services.AddOptions<MyAppSettings>()
.Bind(configuration.GetSection(MyAppSettings.ConfigurationName()))
.ValidateFluentValidation()
.ValidateOnStart();
// Build service provider
var serviceProvider = services.BuildServiceProvider();
// Get validated options
var options = serviceProvider.GetRequiredService<IOptions<MyAppSettings>>().Value;
API Reference
ISettings Interface
public interface ISettings
{
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.DaprIdentityStore.Abstractions
Hexalith is a set of libraries to build a micro-service architecture. |
|
Hexalith.Security.Application
Hexalith is a set of libraries to build an application with micro-service architecture. |
|
Hexalith.KeyValueStorages.Abstractions
Hexalith KeyValueStorages utilities and helpers |
|
Hexalith.IdentityStores.Abstractions
Hexalith is a set of libraries to build an application with micro-service architecture. |
|
Hexalith.KeyValueStorages.Files
Hexalith KeyValueStorages utilities and helpers |
GitHub repositories
This package is not used by any popular GitHub repositories.