using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Options;
namespace StellaOps.DependencyInjection.Validation;
///
/// A hosted service that validates options at application startup.
/// This ensures configuration errors are detected early rather than at first use.
///
/// The options type to validate.
internal sealed class OptionsValidationHostedService : IHostedService
where TOptions : class
{
private readonly IOptions _options;
public OptionsValidationHostedService(IOptions options)
{
_options = options;
}
public Task StartAsync(CancellationToken cancellationToken)
{
// Accessing .Value triggers validation if IValidateOptions is registered
_ = _options.Value;
return Task.CompletedTask;
}
public Task StopAsync(CancellationToken cancellationToken) => Task.CompletedTask;
}