protected override void ConfigureApplicationContainer(ILifetimeScope container) { Logger.Information("Collectively.Services.Storage Configuring application container"); base.ConfigureApplicationContainer(container); container.Update(builder => { builder.Populate(_services); builder.RegisterType <CustomJsonSerializer>().As <JsonSerializer>().SingleInstance(); builder.RegisterInstance(_configuration.GetSettings <GeneralSettings>()).SingleInstance(); builder.RegisterInstance(_configuration.GetSettings <MongoDbSettings>()).SingleInstance(); builder.RegisterInstance(_configuration.GetSettings <RedisSettings>()).SingleInstance(); builder.RegisterModule <MongoDbModule>(); builder.RegisterType <MongoDbInitializer>().As <IDatabaseInitializer>(); builder.RegisterType <DatabaseSeeder>().As <IDatabaseSeeder>().InstancePerLifetimeScope(); builder.RegisterType <GroupRemarkRepository>().As <IGroupRemarkRepository>().InstancePerLifetimeScope(); builder.RegisterType <OperationRepository>().As <IOperationRepository>().InstancePerLifetimeScope(); builder.RegisterType <RemarkRepository>().As <IRemarkRepository>().InstancePerLifetimeScope(); builder.RegisterType <RemarkCategoryRepository>().As <IRemarkCategoryRepository>().InstancePerLifetimeScope(); builder.RegisterType <ReportRepository>().As <IReportRepository>().InstancePerLifetimeScope(); builder.RegisterType <TagRepository>().As <ITagRepository>().InstancePerLifetimeScope(); builder.RegisterType <UserRepository>().As <IUserRepository>().InstancePerLifetimeScope(); builder.RegisterType <UserSessionRepository>().As <IUserSessionRepository>().InstancePerLifetimeScope(); builder.RegisterType <GroupRepository>().As <IGroupRepository>().InstancePerLifetimeScope(); builder.RegisterType <UserNotificationSettingsRepository>().As <IUserNotificationSettingsRepository>().InstancePerLifetimeScope(); builder.RegisterType <OrganizationRepository>().As <IOrganizationRepository>().InstancePerLifetimeScope(); builder.RegisterType <ProviderClient>().As <IProviderClient>().InstancePerLifetimeScope(); builder.RegisterType <OperationProvider>().As <IOperationProvider>().InstancePerLifetimeScope(); builder.RegisterType <RemarkProvider>().As <IRemarkProvider>().InstancePerLifetimeScope(); builder.RegisterType <StatisticsProvider>().As <IStatisticsProvider>().InstancePerLifetimeScope(); builder.RegisterType <UserProvider>().As <IUserProvider>().InstancePerLifetimeScope(); builder.RegisterType <NotificationProvider>().As <INotificationProvider>().InstancePerLifetimeScope(); builder.RegisterType <GroupProvider>().As <IGroupProvider>().InstancePerLifetimeScope(); builder.RegisterType <OrganizationProvider>().As <IOrganizationProvider>().InstancePerLifetimeScope(); builder.RegisterType <Handler>().As <IHandler>().InstancePerLifetimeScope(); builder.RegisterInstance(_configuration.GetSettings <ExceptionlessSettings>()).SingleInstance(); builder.RegisterType <ExceptionlessExceptionHandler>().As <IExceptionHandler>().SingleInstance(); builder.RegisterModule <CommandHandlersModule>(); builder.RegisterModule <EventHandlersModule>(); builder.RegisterModule <ServiceClientModule>(); builder.RegisterModule <ServiceClientsModule>(); builder.RegisterModule <RedisModule>(); builder.RegisterType <AccountStateService>().As <IAccountStateService>().InstancePerLifetimeScope(); builder.RegisterType <TagService>().As <ITagService>().InstancePerLifetimeScope(); builder.RegisterType <OperationCache>().As <IOperationCache>().InstancePerLifetimeScope(); builder.RegisterType <RemarkCache>().As <IRemarkCache>().InstancePerLifetimeScope(); builder.RegisterType <GroupCache>().As <IGroupCache>().InstancePerLifetimeScope(); builder.RegisterType <OrganizationCache>().As <IOrganizationCache>().InstancePerLifetimeScope(); builder.RegisterType <UserCache>().As <IUserCache>().InstancePerLifetimeScope(); builder.RegisterType <UserNotificationSettingsCache>().As <IUserNotificationSettingsCache>().InstancePerLifetimeScope(); SecurityContainer.Register(builder, _configuration); RabbitMqContainer.Register(builder, _configuration.GetSettings <RawRabbitConfiguration>()); }); LifeTimeScope = container; }