public void Register(ContainerBuilder builder, ITypeFinder typeFinder, MotelConfig config) { builder.RegisterType <IUserService>().As <UserService>().InstancePerLifetimeScope(); builder.RegisterType <IPermissionService>().As <PermissionService>().InstancePerLifetimeScope(); builder.RegisterType <IAuthenticationService>().As <CookieAuthenticationService>().InstancePerLifetimeScope(); builder.RegisterType <DataProviderManager>().As <IDataProviderManager>().InstancePerDependency(); }
public RedisCacheManager(IHttpContextAccessor httpContextAccessor, IRedisConnectionWrapper connectionWrapper, MotelConfig config) { _perRequestCache = new PerRequestCache(httpContextAccessor); _connectionWrapper = connectionWrapper; _config = config; _db = connectionWrapper.GetDatabase(config.RedisDatabaseId ?? (int)RedisDatabaseNumber.Cache); }
public virtual void RegisterDependencies(ContainerBuilder containerBuilder, MotelConfig nopConfig) { //register engine containerBuilder.RegisterInstance(this).As <IEngine>().SingleInstance(); //register type finder containerBuilder.RegisterInstance(_typeFinder).As <ITypeFinder>().SingleInstance(); //find dependency registrars provided by other assemblies var dependencyRegistrars = _typeFinder.FindClassesOfType <IDependencyRegistrar>(); //create and sort instances of dependency registrars var instances = dependencyRegistrars .Select(dependencyRegistrar => (IDependencyRegistrar)Activator.CreateInstance(dependencyRegistrar)) .OrderBy(dependencyRegistrar => dependencyRegistrar.Order); //register all provided dependencies foreach (var dependencyRegistrar in instances) { dependencyRegistrar.Register(containerBuilder, _typeFinder, nopConfig); } }
public RedisConnectionWrapper(MotelConfig config) { _config = config; _connectionString = new Lazy <string>(GetConnectionString); _redisLockFactory = CreateRedisLockFactory(); }
public void Register(ContainerBuilder builder, ITypeFinder typeFinder, MotelConfig config) { builder.RegisterType <MotelFileProvider>().As <IMotelFileProvider>().InstancePerLifetimeScope(); //web helper builder.RegisterType <WebHelper>().As <IWebHelper>().InstancePerLifetimeScope(); builder.RegisterType <WebWorkContext>().As <IWorkContext>().InstancePerLifetimeScope(); //data layer //data layer #region data layer builder.RegisterType <DataProviderManager>().As <IDataProviderManager>().InstancePerDependency(); builder.Register(context => context.Resolve <IDataProviderManager>().DataProvider).As <IMotelDataProvider>().InstancePerDependency(); builder.RegisterType <MigrationManager>().As <IMigrationManager>().InstancePerDependency(); builder.RegisterType <DataProviderManager>().As <IDataProviderManager>().InstancePerDependency(); #endregion //repositories #region repositories builder.RegisterGeneric(typeof(EntityRepository <>)).As(typeof(IRepository <>)).InstancePerLifetimeScope(); #endregion #region Meida builder.RegisterType <DownloadService>().As <IDownloadService>().InstancePerLifetimeScope(); builder.RegisterType <PictureService>().As <IPictureService>().InstancePerLifetimeScope(); #endregion #region Auth builder.RegisterType <TokenValidatorService>().As <ITokenValidatorService>().InstancePerLifetimeScope(); builder.RegisterType <UserService>().As <IUserService>().InstancePerLifetimeScope(); builder.RegisterType <PermissionService>().As <IPermissionService>().InstancePerLifetimeScope(); builder.RegisterType <RolesUserServices>().As <IRolesUserServices>().InstancePerLifetimeScope(); builder.RegisterType <CookieAuthenticationService>().As <IAuthenticationService>().InstancePerLifetimeScope(); builder.RegisterType <EncryptionService>().As <IEncryptionService>().InstancePerLifetimeScope(); builder.RegisterType <AntiForgeryCookieService>().As <IAntiForgeryCookieService>().InstancePerLifetimeScope(); #endregion #region Lester builder.RegisterType <LesterServices>().As <ILesterServices>().InstancePerLifetimeScope(); builder.RegisterType <LesterRegistrationService>().As <ILesterRegistrationService>().InstancePerLifetimeScope(); builder.RegisterType <TokenStoreService>().As <ITokenStoreService>().InstancePerLifetimeScope(); builder.RegisterType <TokenFactoryService>().As <ITokenFactoryService>().InstancePerLifetimeScope(); #endregion #region Post builder.RegisterType <RentalPostService>().As <IRentalPostService>().InstancePerDependency(); builder.RegisterType <CategoryService>().As <ICategoryService>().InstancePerDependency(); builder.RegisterType <TerritoriesServices>().As <ITerritoriesServices>().InstancePerDependency(); builder.RegisterType <UtilitiesRoomServices>().As <IUtilitiesRoomServices>().InstancePerDependency(); #endregion #region Cache and event builder.RegisterType <EventPublisher>().As <IEventPublisher>().InstancePerDependency(); builder.RegisterType <CacheKeyService>().As <ICacheKeyService>().InstancePerLifetimeScope(); if (config.RedisEnabled) { builder.RegisterType <RedisConnectionWrapper>() .As <ILocker>() .As <IRedisConnectionWrapper>() .SingleInstance(); } builder.RegisterType <RedisCacheManager>().As <IStaticCacheManager>().InstancePerLifetimeScope(); builder.Register(context => context.Resolve <IDataProviderManager>().DataProvider).As <IMotelDataProvider>().InstancePerDependency(); if (config.RedisEnabled) { builder.RegisterType <RedisConnectionWrapper>() .As <ILocker>() .As <IRedisConnectionWrapper>() .SingleInstance(); } var consumers = typeFinder.FindClassesOfType(typeof(IConsumer <>)).ToList(); foreach (var consumer in consumers) { builder.RegisterType(consumer) .As(consumer.FindInterfaces((type, criteria) => { var isMatch = type.IsGenericType && ((Type)criteria).IsAssignableFrom(type.GetGenericTypeDefinition()); return(isMatch); }, typeof(IConsumer <>))) .InstancePerLifetimeScope(); } #endregion #region Common builder.RegisterType <DefaultLogger>().As <ILogger>().InstancePerLifetimeScope(); builder.RegisterType <SettingService>().As <ISettingService>().InstancePerLifetimeScope(); builder.RegisterType <WebHelper>().As <IWebHelper>().InstancePerLifetimeScope(); builder.RegisterType <ActionContextAccessor>().As <IActionContextAccessor>().InstancePerLifetimeScope(); builder.RegisterType <CacheKeyService>().As <ICacheKeyService>().InstancePerLifetimeScope(); builder.RegisterSource(new SettingsSource()); #endregion }
public void ConfigureServices(IServiceCollection services, IConfiguration configuration, MotelConfig MotelConfig) { //find startup configurations provided by other assemblies _typeFinder = new WebAppTypeFinder(); var startupConfigurations = _typeFinder.FindClassesOfType <IMotelStartup>(); //create and sort instances of startup configurations var instances = startupConfigurations .Select(startup => (IMotelStartup)Activator.CreateInstance(startup)) .OrderBy(startup => startup.Order); //configure services foreach (var instance in instances) { instance.ConfigureServices(services, configuration); } //register mapper configurations AddAutoMapper(services, _typeFinder); //run startup tasks RunStartupTasks(_typeFinder); //resolve assemblies here. otherwise, plugins can throw an exception when rendering views AppDomain.CurrentDomain.AssemblyResolve += CurrentDomain_AssemblyResolve; }