stabilizaiton work - projects rework for maintenanceability and ui livening
This commit is contained in:
@@ -0,0 +1,42 @@
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using Microsoft.Extensions.Options;
|
||||
|
||||
namespace StellaOps.DependencyInjection.Validation;
|
||||
|
||||
public static partial class FailFastOptionsExtensions
|
||||
{
|
||||
/// <summary>
|
||||
/// Adds options with data annotation validation and configures fail-fast startup validation.
|
||||
/// </summary>
|
||||
/// <typeparam name="TOptions">The options type to configure. Must have DataAnnotations attributes.</typeparam>
|
||||
/// <param name="services">The service collection.</param>
|
||||
/// <param name="sectionName">The configuration section name.</param>
|
||||
/// <returns>The service collection for chaining.</returns>
|
||||
public static IServiceCollection AddOptionsWithDataAnnotations<TOptions>(
|
||||
this IServiceCollection services,
|
||||
string sectionName)
|
||||
where TOptions : class
|
||||
{
|
||||
services.AddOptions<TOptions>()
|
||||
.BindConfiguration(sectionName)
|
||||
.ValidateDataAnnotations()
|
||||
.ValidateOnStart();
|
||||
|
||||
return services;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Registers an existing options configuration to validate on start.
|
||||
/// Use when options are already registered but need fail-fast validation added.
|
||||
/// </summary>
|
||||
/// <typeparam name="TOptions">The options type.</typeparam>
|
||||
/// <param name="services">The service collection.</param>
|
||||
/// <returns>The service collection for chaining.</returns>
|
||||
public static IServiceCollection ValidateOptionsOnStart<TOptions>(this IServiceCollection services)
|
||||
where TOptions : class
|
||||
{
|
||||
// Force options validation at startup by resolving IOptions<TOptions>
|
||||
services.AddHostedService<OptionsValidationHostedService<TOptions>>();
|
||||
return services;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user