using LiteCharms.Features.Abstractions; using LiteCharms.Features.Browser; using LiteCharms.Features.MidrandBooks.Abstractions; namespace LiteCharms.Features.MidrandBooks.Extensions; public static class Shop { public static IServiceCollection AddShopServices(this IServiceCollection services, bool includeLocalStorage = false) { 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.AddScoped(sharedImplementation); var coreImplementations = typeof(IMidrandBooks).Assembly.GetTypes() .Where(t => serviceType.IsAssignableFrom(t) && t.IsClass && !t.IsAbstract); foreach (var coreImplementation in coreImplementations) services.AddScoped(coreImplementation); if (includeLocalStorage) services.AddScoped(); return services; } }