using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection.Extensions; using StellaOps.Scanner.CallGraph; using StellaOps.Scanner.Contracts; using StellaOps.Scanner.ReachabilityDrift.Services; namespace StellaOps.Scanner.ReachabilityDrift.DependencyInjection; public static class ServiceCollectionExtensions { public static IServiceCollection AddReachabilityDrift(this IServiceCollection services) { ArgumentNullException.ThrowIfNull(services); services.TryAddSingleton(); services.TryAddSingleton(); services.TryAddSingleton(); services.TryAddSingleton(sp => { var timeProvider = sp.GetService(); return new ReachabilityAnalyzer(timeProvider); }); services.TryAddSingleton(); return services; } }