public override void ConfigureServices(IServiceCollection services) { //DbContext services.AddDbContext <AppDbContext>(options => options.UseInMemoryDatabase(databaseName: Configuration.GetConnectionString("EFInMemDbName"))); //Repo services.AddTransient <IApplicantRepository, ApplicantRepository>(); //Svc services.AddTransient <IApplicantDomainService, ApplicantDomainService>(); //Validation services.AddTransient <IValidator <Applicant>, ApplicantValidation>(); services.AddMvc().AddFluentValidation(fvc => fvc.RegisterValidatorsFromAssemblyContaining <Startup>());//Todo check Duplicate with upper lone //Localization services.AddJsonLocalization(opts => { opts.ResourcesPath = "Resources"; }); //Retry and Fallback policies var policyWrap = Policy.WrapAsync(FallbackPolicy(), GetRetryPolicy()); services.AddHttpClient("HttpClient").AddPolicyHandler(policyWrap); //ServiceProvider ServiceProviderHandler.Initialize(services.BuildServiceProvider()); }
protected T GetService <T>() => ServiceProviderHandler.GetService <T>();