using Microsoft.Extensions.DependencyInjection; namespace Toolkit.Foundation; public class ServiceScopeFactory(IServiceScopeFactory serviceScopeFactory, ICache cache) : IServiceScopeFactory where TService : notnull { public TService? Create(params object?[] parameters) { if (serviceScopeFactory.CreateScope() is IServiceScope serviceScope) { if (serviceScope.ServiceProvider.GetService() is IServiceFactory factory) { if (factory.Create(parameters) is TService service) { cache.Add(service, serviceScope); return service; } } } return default; } }