using System; using Microsoft.Extensions.DependencyInjection; namespace StellaOps.Scanner.Surface.Validation; public sealed class SurfaceValidationBuilder { private readonly IServiceCollection _services; internal SurfaceValidationBuilder(IServiceCollection services) { _services = services; } public SurfaceValidationBuilder AddValidator() where TValidator : class, ISurfaceValidator { _services.AddSingleton(); return this; } public SurfaceValidationBuilder AddValidator(Func factory) { if (factory is null) { throw new ArgumentNullException(nameof(factory)); } _services.AddSingleton(provider => factory(provider)); return this; } }