public MongodbCacheManager()
        {
            this._xnyCfg      = XNYConfig.Instance;
            this._mongoDbCfg  = MongoDbConfig.Instance;
            this._mongoClient = new MongoClient(this._mongoDbCfg.Connection.Value);

            #region 根据环境判断获取链接数据库

            string _cacheDb = string.Concat(this._xnyCfg.Debug ? "test_" : "", this._mongoDbCfg.MongoCache.Name);
            this._mongoDb = _mongoClient.GetDatabase(_cacheDb);

            #endregion
        }
        /// <summary>
        /// Initialize components and plugins in the nop environment.
        /// </summary>
        /// <param name="config">Config</param>
        public void Initialize(XNYConfig config)
        {
            //初始化日志
            LogHelper.Init();

            //register dependencies
            RegisterDependencies(config);

            // 执行启动任务
            if (!config.IgnoreStartupTasks)
            {
                RunStartupTasks();
            }
        }
Beispiel #3
0
        /// <summary>
        /// Initialize components and plugins in the nop environment.
        /// </summary>
        /// <param name="config">Config</param>
        public void Initialize(XNYConfig config)
        {
            //初始化日志
            LogHelper.Init();

            if (config != null && config.IsResolve)
            {
                //依赖注入
                RegisterDependencies(config);
                // 执行启动任务
                if (!config.IgnoreStartupTasks)
                {
                    RunStartupTasks();
                }
            }
        }
        /// <summary>
        /// 创建工厂实例并添加HTTP应用程序注入设施
        /// </summary>
        /// <param name="config">Config</param>
        /// <returns>返回新的引擎实例</returns>
        protected static IEngine CreateEngineInstance(XNYConfig config)
        {
            if (config != null && !string.IsNullOrEmpty(config.EngineType))
            {
                var engineType = Type.GetType(config.EngineType);
                if (engineType == null)
                {
                    throw new ConfigurationErrorsException("The type '" + config.EngineType + "' could not be found. Please check the configuration at /configuration/nop/engine[@engineType] or check for missing assemblies.");
                }
                if (!typeof(IEngine).IsAssignableFrom(engineType))
                {
                    throw new ConfigurationErrorsException("The type '" + engineType + "' doesn't implement 'IEngine' and cannot be configured in /configuration/nop/engine[@engineType] for that purpose.");
                }
                return(Activator.CreateInstance(engineType) as IEngine);
            }

            return(new XNYEngine());
        }
        /// <summary>
        /// Register dependencies
        /// </summary>
        /// <param name="config">Config</param>
        protected virtual void RegisterDependencies(XNYConfig config)
        {
            var builder   = new ContainerBuilder();
            var container = builder.Build();

            //we create new instance of ContainerBuilder
            //because Build() or Update() method can only be called once on a ContainerBuilder.


            //dependencies
            var typeFinder = new WebAppTypeFinder(config);

            builder = new ContainerBuilder();
            builder.RegisterInstance(config).As <XNYConfig>().SingleInstance();
            builder.RegisterInstance(this).As <IEngine>().SingleInstance();
            builder.RegisterInstance(typeFinder).As <ITypeFinder>().SingleInstance();
            builder.Update(container);

            //register dependencies provided by other assemblies
            builder = new ContainerBuilder();
            var drTypes     = typeFinder.FindClassesOfType <IDependencyRegistrar>();
            var drInstances = new List <IDependencyRegistrar>();

            foreach (var drType in drTypes)
            {
                drInstances.Add((IDependencyRegistrar)Activator.CreateInstance(drType));
            }
            //sort
            drInstances = drInstances.AsQueryable().OrderBy(t => t.Order).ToList();
            foreach (var dependencyRegistrar in drInstances)
            {
                dependencyRegistrar.Register(builder, typeFinder);
            }
            builder.Update(container);


            this._containerManager = new ContainerManager(container);

            //set dependency resolver
            //DependencyResolver.SetResolver(new AutofacDependencyResolver(container));
        }
 public WebAppTypeFinder(XNYConfig config)
 {
     this._ensureBinFolderAssembliesLoaded = config.DynamicDiscovery;
 }