示例#1
0
        public virtual void Configure(IEngine engine, ContainerManager containerManager, EventBroker broker, SiteConfig configuration)
        {
            //other dependencies
            containerManager.AddComponentInstance<SiteConfig>(configuration, "site.configuration");
            containerManager.AddComponentInstance<IEngine>(engine, "site.engine");
            containerManager.AddComponentInstance<ContainerConfigurer>(this, "site.containerConfigurer");

            //type finder
            containerManager.AddComponent<ITypeFinder, WebAppTypeFinder>("site.typeFinder");

            //register dependencies provided by other assemblies
            var typeFinder = containerManager.Resolve<ITypeFinder>();
            containerManager.UpdateContainer(x =>
            {
                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(x, typeFinder);
            });

            //event broker
            containerManager.AddComponentInstance(broker);

            //service registration
            containerManager.AddComponent<DependencyAttributeRegistrator>("site.serviceRegistrator");
            var registrator = containerManager.Resolve<DependencyAttributeRegistrator>();
            var services = registrator.FindServices();
            var configurations = GetComponentConfigurations(configuration);
            services = registrator.FilterServices(services, configurations);
            registrator.RegisterServices(services);
        }
        public virtual void Configure(IEngine engine, ContainerManager containerManager, EventBroker broker, SmartStoreConfig configuration)
        {
            //other dependencies
            containerManager.AddComponentInstance<SmartStoreConfig>(configuration, "sm.configuration");
            containerManager.AddComponentInstance<IEngine>(engine, "sm.engine");
            containerManager.AddComponentInstance<ContainerConfigurer>(this, "sm.containerConfigurer");

            //type finder
            containerManager.AddComponent<ITypeFinder, WebAppTypeFinder>("sm.typeFinder");

            //register dependencies provided by other assemblies
            var typeFinder = containerManager.Resolve<ITypeFinder>();
            containerManager.UpdateContainer(x =>
            {
                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(x, typeFinder);
            });

            // event broker
            containerManager.AddComponentInstance(broker);

			// AutofacDependencyResolver
			var scopeProvider = new AutofacLifetimeScopeProvider(containerManager.Container);
			var dependencyResolver = new AutofacDependencyResolver(containerManager.Container, scopeProvider);
			DependencyResolver.SetResolver(dependencyResolver);
        }
        public virtual void Configure(IEngine engine, ContainerManager containerManager, WaterMoonConfig configuration)
        {
            //other dependencies
            containerManager.AddComponentInstance<WaterMoonConfig>(configuration, "watermoon.configuration");
            containerManager.AddComponentInstance<IEngine>(engine, "watermoon.engine");
            containerManager.AddComponentInstance<ContainerConfigurer>(this, "watermoon.containerConfigurer");

            //type finder
            containerManager.AddComponent<ITypeFinder, WebAppTypeFinder>("watermoon.typeFinder");

            //register dependencies provided by other assemblies
            var typeFinder = containerManager.Resolve<ITypeFinder>();
            containerManager.UpdateContainer(x =>
            {
                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(x, typeFinder);
                }
            });
        }
        /// <summary>
        ///
        /// </summary>
        /// <param name="engine"></param>
        /// <param name="containerManager"></param>
        /// <param name="broker"></param>
        /// <param name="configuration"></param>
        public virtual void Configure(IEngine engine, ContainerManager containerManager, EventBroker broker, IEngineConfig configuration)
        {
            //other dependencies
            containerManager.AddComponentInstance <IEngineConfig>(configuration, "Chenyuan.configuration");
            containerManager.AddComponentInstance <IEngine>(engine, "Chenyuan.engine");
            containerManager.AddComponentInstance <ContainerConfigurer>(this, "Chenyuan.containerConfigurer");

            //type finder
            containerManager.AddComponent <ITypeFinder, WebAppTypeFinder>("Chenyuan.typeFinder");

            //register dependencies provided by other assemblies
            var typeFinder = containerManager.Resolve <ITypeFinder>();

            containerManager.UpdateContainer(x =>
            {
                var drTypes     = typeFinder.FindClassesOfType <IDependencyRegistar>();
                var drInstances = new List <IDependencyRegistar>();
                foreach (var drType in drTypes)
                {
                    drInstances.Add((IDependencyRegistar)Activator.CreateInstance(drType));
                }
                //sort
                drInstances = drInstances.OrderBy(t => t.Order).ToList();
                foreach (var dependencyRegistrar in drInstances)
                {
                    dependencyRegistrar.Register(x, typeFinder);
                }
            });

            //event broker
            containerManager.AddComponentInstance(broker);
        }
示例#5
0
        public virtual void Configure(ICore core, ContainerManager containerManager, EventBroker broker/*, AaronConfig configuration*/)
        {
            //other dependencies
            //containerManager.AddComponentInstance<AaronConfig>(configuration, "aaron.configuration");
            containerManager.AddComponentInstance<ICore>(core, "aaron.core");
            containerManager.AddComponentInstance<ContainerConfigurer>(this, "aaron.containerConfigurer");

            //type finder
            containerManager.AddComponent<ITypeFinder, WebAppTypeFinder>("aaron.typeFinder");

            //register dependencies provided by other assemblies
            var typeFinder = containerManager.Resolve<ITypeFinder>();
            containerManager.UpdateContainer(x =>
            {
                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(x, typeFinder);
            });

            //event broker
            containerManager.AddComponentInstance(broker);

            containerManager.AddComponent<DeasyAttributeRegistrator>();
            var deasyAttributeRegistrator = containerManager.Resolve<DeasyAttributeRegistrator>();
            var deasyAttributes = deasyAttributeRegistrator.FindDeasyAttributes();
            deasyAttributeRegistrator.RegisterDeasy(deasyAttributes);
        }
示例#6
0
        public virtual void Configure(IEngine engine, ContainerManager containerManager, EventBroker broker, NopConfig configuration)
        {
            //register dependencies provided by other assemblies
            containerManager.AddComponent<IWebHelper, WebHelper>("nop.webHelper");
            containerManager.AddComponent<ITypeFinder, WebAppTypeFinder>("nop.typeFinder");
            var typeFinder = containerManager.Resolve<ITypeFinder>();
            containerManager.UpdateContainer(x =>
            {
                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(x, typeFinder);
            });

            //Register event consumers
            var consumers = typeFinder.FindClassesOfType(typeof (IConsumer<>)).ToList();
            containerManager.UpdateContainer(x =>
            {
                foreach(var consumer in consumers)
                {
                    x.RegisterType(consumer)
                        .As(consumer.FindInterfaces((type, criteria) =>
                        {
                            var isMatch = type.IsGenericType && ((Type)criteria).IsAssignableFrom(type.GetGenericTypeDefinition());
                            return isMatch;
                        }, typeof (IConsumer<>)))
                        .InstancePerHttpRequest();
                }
            });

            containerManager.AddComponent<IEventPublisher, EventPublisher>("nop.eventPublisher");
            containerManager.AddComponent<ISubscriptionService, SubscriptionService>("nop.subscriptionService");

            //other dependencies
            containerManager.AddComponentInstance<NopConfig>(configuration, "nop.configuration");
            containerManager.AddComponentInstance<IEngine>(engine, "nop.engine");
            containerManager.AddComponentInstance<ContainerConfigurer>(this, "nop.containerConfigurer");

            //if (configuration.Components != null)
            //    RegisterConfiguredComponents(containerManager, configuration.Components);

            //event broker
            containerManager.AddComponentInstance(broker);

            //service registration
            containerManager.AddComponent<DependencyAttributeRegistrator>("nop.serviceRegistrator");
            var registrator = containerManager.Resolve<DependencyAttributeRegistrator>();
            var services = registrator.FindServices();
            var configurations = GetComponentConfigurations(configuration);
            services = registrator.FilterServices(services, configurations);
            registrator.RegisterServices(services);
        }
示例#7
0
        public virtual void Configure(ITelehireEngine engine, ContainerManager containerManager)
        {
            containerManager.AddComponentInstance<ITelehireEngine>(engine, "Appform.engine");
            containerManager.AddComponentInstance<ContainerConfigurer>(this, "Appform.containerConfigurer");

            //type finder
            containerManager.AddComponent<ITypeLocator, WebAppTypeLocator>("Forms.typeFinder");

            //register dependencies provided by other assemblies
            var typeFinder = containerManager.Resolve<ITypeLocator>();
            containerManager.UpdateContainer(x =>
            {
                var drTypes = typeFinder.FindClassesOfType<IDependencyRegistrar>();
                var drInstances = new List<IDependencyRegistrar>();
                foreach (var drType in drTypes)
                    drInstances.Add((IDependencyRegistrar)Activator.CreateInstance(drType));

                foreach (var dependencyRegistrar in drInstances)
                    dependencyRegistrar.Register(x, typeFinder);
            });
        }
示例#8
0
        /// <summary>
        /// 执行配置
        /// </summary>
        /// <param name="engine"></param>
        /// <param name="containerManager"></param>
        /// <param name="broker"></param>
        /// <param name="configuration"></param>
        public virtual void Configure(IEngine engine, ContainerManager containerManager, EventBroker broker, BaseConfig configuration)
        {
            //基础组件
            //添加基础配置的实例
            containerManager.AddComponentInstance<BaseConfig>(configuration, "Platform.Configuration");
            //添加引擎的实现
            containerManager.AddComponentInstance<IEngine>(engine, "Platform.Engine");
            //添加组件容器配置服务的实例
            containerManager.AddComponentInstance<ContainerConfigurer>(this, "Platform.ContainerConfigurer");
            //添加类型查找器服务的实现
            containerManager.AddComponent<ITypeFinder, WebAppTypeFinder>("Platform.TypeFinder");

            //注册的其他组件提供的依赖
            var typeFinder = containerManager.Resolve<ITypeFinder>();
            containerManager.UpdateContainer(x => {
                var drTypes = typeFinder.FindClassesOfType<IDependencyRegistrar>();
                var drInstances = new List<IDependencyRegistrar>();
                foreach (var drType in drTypes)
                {
                    drInstances.Add((IDependencyRegistrar)Activator.CreateInstance(drType));
                }
                //排序
                drInstances = drInstances.AsQueryable().OrderBy(t => t.Order).ToList();
                foreach (var dependencyRegistrar in drInstances)
                {
                    dependencyRegistrar.Register(x, typeFinder);
                }
            });

            //事件代理
            containerManager.AddComponentInstance(broker);

            //添加通过特性配置的依赖关系
            containerManager.AddComponent<DependencyAttributeRegistrator>("Platform.DependencyRegistrator");
            var registrator = containerManager.Resolve<DependencyAttributeRegistrator>();
            var services = registrator.FindServices();
            var configurations = this.GetComponentConfigurations(configuration);
            services = registrator.FilterServices(services, configurations);
            registrator.RegisterServices(services);
        }
示例#9
0
        //thats where the modificatioon is, Jekkkoooooo!
        //http://www.nopcommerce.com/boards/t/22823/web-api-dependency-injection.aspx
        public virtual void Configure(IEngine engine, ContainerManager containerManager, IContainer container)
        {
            //other dependencies

            containerManager.AddComponentInstance<IEngine>(engine, "sprite.engine");
            containerManager.AddComponentInstance<ContainerConfigurer>(this, "sprite.containerConfigurer");
            //TransactionAttribute

           // containerManager.AddComponent<ITypeFinder, TransactionAttribute>("sprite.typeFinder");

            //type finder
            containerManager.AddComponent<ITypeFinder, WebAppTypeFinder>("sprite.typeFinder");

            //register dependencies provided by other assemblies
            var typeFinder = containerManager.Resolve<ITypeFinder>();
            containerManager.UpdateContainer(x =>
            {
                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(x, typeFinder);

                

            });

            var webApiResolver = new AutofacWebApiDependencyResolver(container);
            GlobalConfiguration.Configuration.DependencyResolver = webApiResolver;

            //for Hangfire
            JobActivator.Current = new AutofacJobActivator(container);
          
        }
        public virtual void Configure(IEngine engine, ContainerManager containerManager)
        {
            containerManager.AddComponent<IWebHelper, WebHelper>("gather.webHelper");
            containerManager.AddComponent<ITypeFinder, WebAppTypeFinder>("gather.typeFinder");

            // Register all dependency registrars
            var typeFinder = containerManager.Resolve<ITypeFinder>();
            containerManager.UpdateContainer(x =>
            {
                // Find all dependency registrars
                var drTypes = typeFinder.FindClassesOfType<IDependencyRegistrar>();
                var drInstances = drTypes.Select(drType => (IDependencyRegistrar)Activator.CreateInstance(drType)).ToList();

                // Re-order the registrars to consider any hierarchy
                drInstances = drInstances.AsQueryable().OrderBy(t => t.Order).ToList();

                // Loop each registrar, registering the dependencies
                foreach (var dependencyRegistrar in drInstances)
                    dependencyRegistrar.Register(x, typeFinder);
            });

            containerManager.AddComponentInstance<IEngine>(engine, "gather.engine");
            containerManager.AddComponentInstance<ContainerConfigurer>(this, "gather.containerConfigurer");
        }
示例#11
0
        public void Register(ContainerManager containerManager, Common.Infrastructure.ITypeFinder typeFinder)
        {
            containerManager.AddComponentInstance(typeof(IRoleProvider), typeof(RoleProvider));
            containerManager.AddComponentInstance(typeof(IProvider <Role>), typeof(RoleProvider));

            containerManager.AddComponentInstance(typeof(IUserProvider), typeof(UserProvider));
            containerManager.AddComponentInstance(typeof(IProvider <User>), typeof(UserProvider));

            containerManager.AddComponentInstance(typeof(ISettingProvider), typeof(SettingProvider));
            containerManager.AddComponentInstance(typeof(IProvider <Setting>), typeof(SettingProvider));
        }
示例#12
0
        public void Register(ContainerManager containerManager, Common.Infrastructure.ITypeFinder typeFinder)
        {
            containerManager.AddComponentInstance(typeof(IRoleProvider), typeof(RoleProvider));
            containerManager.AddComponentInstance(typeof(IProvider<Role>), typeof(RoleProvider));

            containerManager.AddComponentInstance(typeof(IUserProvider), typeof(UserProvider));
            containerManager.AddComponentInstance(typeof(IProvider<User>), typeof(UserProvider));

            containerManager.AddComponentInstance(typeof(ISettingProvider), typeof(SettingProvider));
            containerManager.AddComponentInstance(typeof(IProvider<Setting>), typeof(SettingProvider));
        }
 /// <summary>
 /// 向容器中注册一个实例
 /// </summary>
 /// <param name="instance">类型T的实例</param>
 public void Register <T>(T instance)
 {
     _containerManager.AddComponentInstance(instance.GetType(), instance);
 }