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); }
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 void AddComponentLifeStyle_DoesNotReturnSameServiceTwiceWhenSingleton() { container.AddComponent <object>("testing"); var class1 = container.Resolve <object>(); var class2 = container.Resolve <object>(); Assert.That(class1, Is.SameAs(class2)); }
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); }
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) { //other dependencies //containerManager.AddComponentInstance<NopConfig>(configuration, "nop.configuration"); //containerManager.AddComponentInstance<IEngine>(engine, "nop.engine"); //containerManager.AddComponentInstance<ContainerConfigurer>(this, "nop.containerConfigurer"); //type finder containerManager.AddComponent<ITypeFinder, WebAppTypeFinder>("nop.typeFinder"); //ContainerBuilder builder = new ContainerBuilder(); //builder.RegisterType<WebAppTypeFinder>().As<ITypeFinder>(); //IContainer container=builder.Build(); //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); }
public virtual void RegisterService(AttributeInfo<DependencyAttribute> attributeInfo, ContainerManager container) { Type serviceType = attributeInfo.Attribute.ServiceType ?? attributeInfo.DecoratedType; container.AddComponent(serviceType, attributeInfo.DecoratedType, attributeInfo.Attribute.Key ?? attributeInfo.DecoratedType.FullName, attributeInfo.Attribute.LifeStyle); }
/// <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); }
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"); }
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); }); }
public virtual void Configure(CoreEngine engine, ContainerManager containerManager) { //other dependencies //ContainerBuilder builder = new ContainerBuilder(); //builder.RegisterGeneric(typeof(CoreEngine)).As(new List<Type> { typeof(CoreEngine) }.ToArray()).SingleInstance(); //builder.Update(containerManager.Container); //containerManager.AddComponentInstance<CoreEngine>(engine, "core.engine"); //containerManager.AddComponentInstance<ContainerConfigurer>(this, "core.containerConfigurer"); //type finder containerManager.AddComponent<ITypeFinder, WebAppTypeFinder>("core.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>("nop.serviceRegistrator"); //var registrator = containerManager.Resolve<DependencyAttributeRegistrator>(); //var services = registrator.FindServices(); //var configurations = GetComponentConfigurations(configuration); //services = registrator.FilterServices(services, configurations); //registrator.RegisterServices(services); }
//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); }