private static IServiceProvider CreateAutofacServiceProvider( IServiceCollection services, string connectionString, IEmailSender emailSender, EmailsSettings emailsSettings, ILogger logger, IExecutionContextAccessor executionContextAccessor) { var container = new ContainerBuilder(); container.Populate(services); container.RegisterModule(new LoggingModule(logger)); container.RegisterModule(new DataAccessModule(connectionString)); container.RegisterModule(new MediatorModule()); container.RegisterModule(new DomainModule()); if (emailSender != null) { container.RegisterModule(new EmailModule(emailSender, emailsSettings)); } else { container.RegisterModule(new EmailModule(emailsSettings)); } container.RegisterModule(new ProcessingModule()); container.RegisterInstance(executionContextAccessor); var buildContainer = container.Build(); ServiceLocator.SetLocatorProvider(() => new AutofacServiceLocator(buildContainer)); var serviceProvider = new AutofacServiceProvider(buildContainer); CompositionRoot.SetContainer(buildContainer); return(serviceProvider); }