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;
}
}