up
This commit is contained in:
@@ -0,0 +1,29 @@
|
||||
using Microsoft.Extensions.Hosting;
|
||||
using Microsoft.Extensions.Options;
|
||||
|
||||
namespace StellaOps.DependencyInjection.Validation;
|
||||
|
||||
/// <summary>
|
||||
/// A hosted service that validates options at application startup.
|
||||
/// This ensures configuration errors are detected early rather than at first use.
|
||||
/// </summary>
|
||||
/// <typeparam name="TOptions">The options type to validate.</typeparam>
|
||||
internal sealed class OptionsValidationHostedService<TOptions> : IHostedService
|
||||
where TOptions : class
|
||||
{
|
||||
private readonly IOptions<TOptions> _options;
|
||||
|
||||
public OptionsValidationHostedService(IOptions<TOptions> options)
|
||||
{
|
||||
_options = options;
|
||||
}
|
||||
|
||||
public Task StartAsync(CancellationToken cancellationToken)
|
||||
{
|
||||
// Accessing .Value triggers validation if IValidateOptions<TOptions> is registered
|
||||
_ = _options.Value;
|
||||
return Task.CompletedTask;
|
||||
}
|
||||
|
||||
public Task StopAsync(CancellationToken cancellationToken) => Task.CompletedTask;
|
||||
}
|
||||
Reference in New Issue
Block a user