public void ConfigureContainer(ContainerBuilder builder) { builder.Register(ctx => new MapperConfiguration(cfg => cfg.AddProfile(typeof(AutoMapperProfile)))); builder.Register(ctx => ctx.Resolve <MapperConfiguration>().CreateMapper()).As <IMapper>(); builder.Register <ILogger>((c, p) => { return(new LoggerConfiguration() .ReadFrom.Configuration(Configuration) .Enrich.FromLogContext() .WriteTo.Console() .WriteTo.File($"/logs/log-.log", rollingInterval: RollingInterval.Day) .CreateLogger()); }).SingleInstance(); builder.Register(c => Configuration) .As <IConfigurationRoot>() .SingleInstance(); builder.RegisterType <AppSettings>() .SingleInstance(); builder.RegisterType <HttpContextAccessor>() .As <IHttpContextAccessor>() .SingleInstance(); builder.RegisterType <ActionContextAccessor>() .As <IActionContextAccessor>() .SingleInstance(); builder.RegisterType <UrlHelperFactory>() .AsImplementedInterfaces() .InstancePerLifetimeScope(); builder.RegisterType <ClientDbContext>() .WithParameter("options", DbContextOptionsFactory.GetClientDbContextOptions()) .WithParameter("config", Configuration) .InstancePerLifetimeScope(); builder.RegisterType <ManagementDbContext>() .WithParameter("options", DbContextOptionsFactory.GetManagementDbContextOptions()) .WithParameter("config", Configuration) .InstancePerLifetimeScope(); builder.RegisterType <UserContext>() .InstancePerLifetimeScope(); builder.RegisterType <EmailBuilder>() .PropertiesAutowired() .InstancePerLifetimeScope(); builder.RegisterType <EmailService>() .AsImplementedInterfaces() .PropertiesAutowired() .InstancePerLifetimeScope(); builder.RegisterAssemblyTypes(Assembly.GetAssembly(typeof(Clients.Repositories.BaseRepository))) .Where(t => t.IsSubclassOf(typeof(Clients.Repositories.BaseRepository))) .PropertiesAutowired() .AsImplementedInterfaces() .InstancePerLifetimeScope(); builder.RegisterAssemblyTypes(Assembly.GetAssembly(typeof(Management.Repositories.BaseRepository))) .Where(t => t.IsSubclassOf(typeof(Management.Repositories.BaseRepository))) .PropertiesAutowired() .AsImplementedInterfaces() .InstancePerLifetimeScope(); builder.RegisterAssemblyTypes(Assembly.GetAssembly(typeof(BaseService))) .Where(t => t.IsSubclassOf(typeof(BaseService))) .PropertiesAutowired() .AsImplementedInterfaces() .InstancePerLifetimeScope(); }