예제 #1
0
        public void Register(ContainerBuilder builder, ITypeFinder typeFinder, HeliosConfig config)
        {
            Logger.Debug("注册数据持久化仓库 IRepository<>");

            builder.Register <IDbContext>(c => new HeliosObjectContext("Database=helios_entity_extensions;Data Source=localhost;User Id=meiyuner;Pwd=Js9zMr36HxJxUU7C;pooling=false;CharSet=utf8mb4;port=3306;Persist Security Info=True;")).InstancePerLifetimeScope();

            builder.RegisterGeneric(typeof(EfRepository <>)).As(typeof(IRepository <>)).InstancePerLifetimeScope();
        }
예제 #2
0
        /// <summary>
        /// Initialize components and plugins in the nop environment.
        /// </summary>
        /// <param name="config">Config</param>
        public void Initialize(HeliosConfig config)
        {
            //register dependencies
            RegisterDependencies(config);

            //startup tasks
            if (!config.IgnoreStartupTasks)
            {
                RunStartupTasks();
            }
        }
예제 #3
0
        public static IEngine Initialize(bool forceRecreate)
        {
            if (Singleton <IEngine> .Instance == null || forceRecreate)
            {
                Singleton <IEngine> .Instance = new Engine();

                var config = new HeliosConfig();
                Singleton <IEngine> .Instance.Initialize(config);
            }
            return(Singleton <IEngine> .Instance);
        }
예제 #4
0
        /// <summary>
        /// Register dependencies
        /// </summary>
        /// <param name="config">Config</param>
        protected virtual void RegisterDependencies(HeliosConfig config)
        {
            var builder   = new ContainerBuilder();
            var container = builder.Build();

            this._containerManager = new ContainerManager(container);

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

            //dependencies
            var typeFinder = new WebAppTypeFinder();

            builder = new ContainerBuilder();
            builder.RegisterInstance(config).As <HeliosConfig>().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, config);
            }
            builder.Update(container);
        }
예제 #5
0
 public virtual void Register(ContainerBuilder builder, ITypeFinder typeFinder, HeliosConfig config)
 {
     //static cache manager
     builder.RegisterType <MemoryCacheManager>()
     .As <ICacheManager>()
     .Named <ICacheManager>("helios_cache_static")
     .SingleInstance();
 }
예제 #6
0
 public virtual void Register(ContainerBuilder builder, ITypeFinder typeFinder, HeliosConfig config)
 {
     builder.RegisterType <PerRequestCacheManager>()
     .As <ICacheManager>()
     .Named <ICacheManager>("helios_cache_per_request")
     .InstancePerLifetimeScope();
 }