using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; namespace Core.Blueprint.Redis.Configuration { /// /// Provides extension methods for registering Redis-related services in the DI container. /// public static class RegisterBlueprint { /// /// Adds Redis caching services to the service collection. /// /// The service collection to register the services into. /// The application configuration object. /// The updated service collection. public static IServiceCollection AddRedis(this IServiceCollection services, IConfiguration configuration) { // Retrieve the Redis connection string from the configuration. // Get Redis configuration section var redisConnectionString = configuration.GetSection("ConnectionStrings:Redis").Value; if (string.IsNullOrEmpty(redisConnectionString)) { throw new InvalidOperationException("Redis connection is not configured."); } // Register RedisCacheProvider services.AddSingleton(provider => new RedisCacheProvider(redisConnectionString, provider.GetRequiredService>(), configuration)); // Get CacheSettings and register with the ICacheSettings interface var cacheSettings = configuration.GetSection("CacheSettings").Get(); if (cacheSettings == null) { throw new InvalidOperationException("Redis CacheSettings section is not configured."); } services.AddSingleton(cacheSettings); return services; } } }