public static IServiceCollection AddServices(this IServiceCollection services, string redisConnectionString) { services.AddAutoMapper(AppDomain.CurrentDomain.GetAssemblies()); services.AddMediatR(AppDomain.CurrentDomain.GetAssemblies()); services.AddScoped <IConfigurationAppService, ConfigurationAppService>(); services.AddConfigurationManager(redisConnectionString); ApplicationMapperConfig.RegisterMappings(); DomainMapperConfig.RegisterMappings(); return(services); }
// This method gets called by the runtime. Use this method to add services to the container. public void ConfigureServices(IServiceCollection services) { services.AddMvc(); services.AddMemoryCache(); services.AddCors(); services.AddDirectoryBrowser(); ApplicationMapperConfig mapperConfig = new ApplicationMapperConfig(Configuration); mapperConfig.Initialize(); services.AddSingleton(Configuration); //Repositories DI (Infrastrucure layer) services.AddScoped <IMangaRepository, MangaRepository>(); services.AddScoped <IChapterRepository, ChapterRepository>(); services.AddScoped <IPageRepository, PageRepository>(); services.AddScoped <ITagRepository, TagRepository>(); //Service DI (Application layer) services.AddScoped <DefaultMangaService>(); services.AddScoped <DefaultChapterService>(); services.AddScoped <DefaultPageService>(); services.AddScoped <DefaultTagService>(); services.AddScoped <OnMangaMangaService>(); services.AddScoped <OnMangaChapterService>(); services.AddScoped <OnMangaPageService>(); services.AddScoped <OnMangaTagService>(); services.AddScoped <ShaqqaaMangaService>(); services.AddScoped <ShaqqaaChapterService>(); services.AddScoped <ShaqqaaPageService>(); services.AddScoped <ShaqqaaTagService>(); services.AddTransient <Func <PluginEnum, IMangaService> >(serviceProvider => key => { switch (key) { case PluginEnum.Default: return(serviceProvider.GetService <DefaultMangaService>()); case PluginEnum.OnManga: return(serviceProvider.GetService <OnMangaMangaService>()); case PluginEnum.Shaqqaa: return(serviceProvider.GetService <ShaqqaaMangaService>()); default: return(serviceProvider.GetService <DefaultMangaService>()); } }); services.AddTransient <Func <PluginEnum, IChapterService> >(serviceProvider => key => { switch (key) { case PluginEnum.Default: return(serviceProvider.GetService <DefaultChapterService>()); case PluginEnum.OnManga: return(serviceProvider.GetService <OnMangaChapterService>()); case PluginEnum.Shaqqaa: return(serviceProvider.GetService <ShaqqaaChapterService>()); default: return(serviceProvider.GetService <DefaultChapterService>()); } }); services.AddTransient <Func <PluginEnum, IPageService> >(serviceProvider => key => { switch (key) { case PluginEnum.Default: return(serviceProvider.GetService <DefaultPageService>()); case PluginEnum.OnManga: return(serviceProvider.GetService <OnMangaPageService>()); case PluginEnum.Shaqqaa: return(serviceProvider.GetService <ShaqqaaPageService>()); default: return(serviceProvider.GetService <DefaultPageService>()); } }); services.AddTransient <Func <PluginEnum, ITagService> >(serviceProvider => key => { switch (key) { case PluginEnum.Default: return(serviceProvider.GetService <DefaultTagService>()); case PluginEnum.OnManga: return(serviceProvider.GetService <OnMangaTagService>()); case PluginEnum.Shaqqaa: return(serviceProvider.GetService <ShaqqaaTagService>()); default: return(serviceProvider.GetService <DefaultTagService>()); } }); }