stabilizaiton work - projects rework for maintenanceability and ui livening

This commit is contained in:
master
2026-02-03 23:40:04 +02:00
parent 074ce117ba
commit 557feefdc3
3305 changed files with 186813 additions and 107843 deletions

View File

@@ -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;
}
}