using LiteCharms.Features.Abstractions; using LiteCharms.Features.MidrandBooks.Abstractions; namespace LiteCharms.Features.MidrandBooks.Extensions; public static class Shop { public static IServiceCollection AddShopServices(this IServiceCollection services) { var serviceType = typeof(IService); var sharedImplementations = typeof(IFeatures).Assembly.GetTypes() .Where(t => serviceType.IsAssignableFrom(t) && t.IsClass && !t.IsAbstract); foreach (var sharedImplementation in sharedImplementations) services.AddTransient(sharedImplementation); var coreImplementations = typeof(IMidrandBooks).Assembly.GetTypes() .Where(t => serviceType.IsAssignableFrom(t) && t.IsClass && !t.IsAbstract); foreach (var coreImplementation in coreImplementations) services.AddScoped(coreImplementation); return services; } }