public void Initializing() { var containerManager = new ContainerManager(_builder.Build()); _containerManager = containerManager; var configurer = new ContainerConfigurer(); configurer.Configure(containerManager); }
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(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, 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); }); }
public void Create_WithInvalidName_ThrowsInvalidNameException(string name) { // Arrange var testManager = new ContainerManager(null); // Act & Assert Assert.Throws<InvalidNameException>(() => testManager.Create(name)); }
protected void CanRegisterDefaultTypeComponent(Func<IContainerAdapter> adapterFunc) { IContainerManager containerManager = new ContainerManager(adapterFunc()); containerManager.Adapter.Register<IDependantClass, DependantClass>(); IDependantClass dependantClass1 = containerManager.Resolve<IDependantClass>(); IDependantClass dependantClass2 = containerManager.Resolve<IDependantClass>(); Assert.AreNotEqual(dependantClass1, dependantClass2); }
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); }
public void UseExternalContainer() { ContainerBuilder builder = new ContainerBuilder(); builder.RegisterType<DependantClass2>().As<IDependantClass>(); ContainerManager containerManager = new ContainerManager(new AutofacContainerAdapter(builder.Build())); IDependantClass dependency = containerManager.Resolve<IDependantClass>(); Assert.IsNotNull(dependency); Assert.AreEqual(typeof(DependantClass2), dependency.GetType()); }
public void ResolveAll() { string containerKey = Guid.NewGuid().ToString(); IContainerManager containerManager = new ContainerManager(new AutofacContainerAdapter(containerKey)); containerManager.Adapter.Register<IDependantClass, DependantClass>(); containerManager.Adapter.Register<IDependantClass, DependantClass2>(); var resolved = containerManager.ResolveAll<IDependantClass>(); Assert.Greater(resolved.Count(), 0); }
public void ResolveAll() { IWindsorContainer container = new WindsorContainer(); container.Register(Classes.FromAssemblyInThisApplication().BasedOn<IDependantClass>().WithServiceAllInterfaces()); string containerKey = Guid.NewGuid().ToString(); IContainerManager containerManager = new ContainerManager(new WindsorContainerAdapter(containerKey, container)); var resolved = containerManager.ResolveAll<IDependantClass>(); Assert.Greater(resolved.Count(), 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); }
public void UseExternalContainer() { IUnityContainer container = new UnityContainer(); container.RegisterType(typeof(IDependantClass), typeof(DependantClass)); string containerKey = Guid.NewGuid().ToString(); IContainerManager containerManager = new ContainerManager(new UnityContainerAdapter(containerKey, container)); IDependantClass dependency = containerManager.Resolve<IDependantClass>(); Assert.IsNotNull(dependency); Assert.AreEqual(typeof(DependantClass), dependency.GetType()); }
public void UseExternalContainer() { IWindsorContainer container = new WindsorContainer(); container.Register(Component.For<IDependantClass>().ImplementedBy<DependantClass>()); string containerKey = Guid.NewGuid().ToString(); IContainerManager containerManager = new ContainerManager(new WindsorContainerAdapter(containerKey, container)); IDependantClass dependency = containerManager.Resolve<IDependantClass>(); Assert.IsNotNull(dependency); Assert.AreEqual(typeof(DependantClass), dependency.GetType()); }
public static IContainerManager Initialize(SmartConfig config = null, bool forceRecreate = false) { if (Singleton<IContainerManager>.Instance == null || forceRecreate) { var container = new ContainerManager(); container.Initialize(config); Singleton<IContainerManager>.Instance = container; } return Singleton<IContainerManager>.Instance; }
public void PreRegisteredContainerAdapter() { ContainerAdapterAccessor.Clear(); var adapter = new AutofacContainerAdapter(); adapter.Register<IDependantClass, DependantClass2>(); IContainerManager containerManager = new ContainerManager(adapter); Assert.IsNotNull(containerManager.Resolve<IDependantClass>()); var containerManager2 = new ContainerManager(); Assert.IsNotNull(containerManager2.Resolve<IDependantClass>()); }
public void UseExternalContainer() { IContainer container = new Container(); container.Configure(x => x.For<IDependantClass>().Use<DependantClass>()); string containerKey = Guid.NewGuid().ToString(); ContainerManager containerManager = new ContainerManager(new StructureMapContainerAdapter(containerKey, container)); IDependantClass dependency = containerManager.Resolve<IDependantClass>(); Assert.IsNotNull(dependency); Assert.AreEqual(typeof(DependantClass), dependency.GetType()); }
protected void CanRegisterInstanceByName(Func<IContainerAdapter> adapterFunc) { IContainerManager containerManager = new ContainerManager(adapterFunc()); Assert.IsNull(containerManager.TryResolve<IDependantClass>("fred")); var dependantClassToRegister = new DependantClass2(); containerManager.Adapter.Register<IDependantClass>("fred", dependantClassToRegister); IDependantClass dependantClass = containerManager.Resolve(typeof(IDependantClass), "fred") as IDependantClass; Assert.AreEqual(dependantClassToRegister, dependantClass); }
protected void CanRegisterBasicType(Func<IContainerAdapter> adapterFunc) { IContainerManager containerManager = new ContainerManager(adapterFunc()); Assert.IsNull(containerManager.TryResolve<IDependantClass>()); DependantClass instanceDependantClass = new DependantClass(); containerManager.Adapter.Register<IDependantClass>(instanceDependantClass); IDependantClass dependantClass = containerManager.Resolve<IDependantClass>(); Assert.AreEqual(instanceDependantClass, dependantClass); }
protected void CanRegisterFluentTransientTypeComponent(Func<IContainerAdapter> adapterFunc) { IContainerManager containerManager = new ContainerManager(adapterFunc()); IComponentRegistration registration = containerManager.Adapter.CreateComponentRegistration<ComponentRegistration>(); registration = registration.Register<IDependantClass>().As<DependantClass>().Lifetime(LifetimeScope.Transient); containerManager.Adapter.Register(registration); IDependantClass dependantClass1 = containerManager.Resolve<IDependantClass>(); IDependantClass dependantClass2 = containerManager.Resolve<IDependantClass>(); Assert.AreNotEqual(dependantClass1, dependantClass2); }
public void ResolveItemByInterfaceOnly() { ContainerManager containerManager = new ContainerManager(TestConstants.WindsorContainerName); IDependantClass dependency = containerManager.Resolve<IDependantClass>(); Assert.IsNotNull(dependency); Assert.AreEqual(typeof(DependantClass), dependency.GetType()); ContainerManager unityContainerManager = new ContainerManager(TestConstants.UnityContainerName); IDependantClass unityDependency = unityContainerManager.Resolve<IDependantClass>(); Assert.AreEqual(typeof(DependantClass), unityDependency.GetType()); }
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)); }
public static IContainerManager GetContainerManager(string name) { if (containerManagers.ContainsKey(name)) { return containerManagers[name]; } IContainerManager containerManager = new ContainerManager(name); containerManagers.Add(name, containerManager); return containerManager; }
protected void CanRegisterGroup(Func<IContainerAdapter> adapterFunc) { IContainerManager containerManager = new ContainerManager(adapterFunc()); Assert.IsNull(containerManager.TryResolve<IDependantClass>()); IContainerManagerGroupRegistration groupRegistration = new TestGroupRegistration(); containerManager.Adapter.RegisterGroup(groupRegistration); IDependantClass dependantClass = containerManager.Resolve<IDependantClass>(); Assert.IsNotNull(dependantClass); Assert.AreEqual(typeof(DependantClass), dependantClass.GetType()); }
public void Create_WithValidName_CallsCreateOnProvider(string name) { // Arrange var provider = MockRepository.GenerateMock<IBlobContainerManager>(); provider.Expect(x => x.Create(name)).Return(MockRepository.GenerateStub<IBlobContainer>()); var testManager = new ContainerManager(provider); // Act testManager.Create(name); // Assert provider.AssertWasCalled(x => x.Create(name)); }
public void Create_WithValidName_ReturnsWrappedProviderContainer() { // Arrange var providerContainer = MockRepository.GenerateStub<IBlobContainer>(); var provider = MockRepository.GenerateStub<IBlobContainerManager>(); provider.Stub(x => x.Create(null)).IgnoreArguments().Return(providerContainer); var testManager = new ContainerManager(provider); // Act var result = testManager.Create("foo"); // Assert Assert.That(result.Provider, Is.EqualTo(providerContainer)); }
protected void CanRegisterByName(Func<IContainerAdapter> adapterFunc) { IContainerManager containerManager = new ContainerManager(adapterFunc()); const string dependencyName = "dependantReg"; containerManager.Adapter.Register<IDependantClass, DependantClass>(); containerManager.Adapter.Register<IDependantClass, DependantClass2>(dependencyName); IDependantClass dependantClass = containerManager.Resolve<IDependantClass>(); Assert.IsNotNull(dependantClass); IDependantClass dependantClass2 = containerManager.Resolve<IDependantClass>(dependencyName); Assert.IsNotNull(dependantClass2); Assert.AreEqual(typeof(DependantClass2), dependantClass2.GetType()); Assert.AreEqual(TestConstants.DependantClassName, dependantClass.Name); Assert.AreEqual(TestConstants.DependantClass2Name, dependantClass2.Name); }
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); }); }
/// <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(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); }
/// <summary> /// Resolve dependency /// </summary> /// <typeparam name="T">T</typeparam> /// <returns></returns> public T Resolve <T>() where T : class { return(ContainerManager.Resolve <T>()); }