using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection.Extensions; namespace StellaOps.Determinism; /// /// Extension methods for registering determinism abstractions in DI. /// public static class DeterminismServiceCollectionExtensions { /// /// Adds as a singleton. /// public static IServiceCollection AddSystemTimeProvider(this IServiceCollection services) { services.TryAddSingleton(TimeProvider.System); return services; } /// /// Adds as the singleton. /// public static IServiceCollection AddSystemGuidProvider(this IServiceCollection services) { services.TryAddSingleton(); return services; } /// /// Adds both and as singletons. /// This is the recommended setup for production services. /// public static IServiceCollection AddDeterminismDefaults(this IServiceCollection services) { services.AddSystemTimeProvider(); services.AddSystemGuidProvider(); return services; } }