Exemple #1
0
 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();
 }
Exemple #5
0
        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;
        }