protected override IServiceProvider CreateServiceProvider() { if (ownContainer) { container = new UnityContainer(); } var wrapper = new ServiceProviderWrapper(container, ownContainer); container.RegisterInstance <IServiceProvider>(wrapper); if (!container.IsRegistered <IUnityContainer>()) { container.RegisterInstance <IUnityContainer>(container); } if (!container.IsRegistered <BootstrapConventions>()) { container.RegisterType <BootstrapConventions>(new ContainerControlledLifetimeManager()); } container.AddNewExtension <SubscribeToMessageExtension>(); container.AddNewExtension <InjectViewInRegionExtension>(); return(wrapper); }
protected override IServiceProvider CreateServiceProvider() { var nss = new DelegateNamingSubSystem() { SubSystemHandler = (s, hs) => { if (hs.Any(h => h.ComponentModel.IsOverridable())) { var nonOverridable = hs.Except(hs.Where(h => h.ComponentModel.IsOverridable())); if (nonOverridable.Any()) { return(nonOverridable.Single()); } } return(null); } }; this.container = new Castle.Windsor.WindsorContainer(); this.container.Kernel.AddSubSystem(SubSystemConstants.NamingKey, nss); this.container.Kernel.Resolver.AddSubResolver(new ArrayResolver(this.container.Kernel, true)); var wrapper = new ServiceProviderWrapper(this.container); var bootConventions = new BootstrapConventions(); this.container.Register( Component.For <IServiceProvider>() .Instance(wrapper) .Properties(pi => bootConventions.IgnorePropertyInjection(pi)) ); this.container.Register(Component.For <IWindsorContainer>().Instance(this.container)); this.container.Register ( Component.For <BootstrapConventions>() .Instance(bootConventions) .Properties(pi => bootConventions.IgnorePropertyInjection(pi)) ); this.container.AddFacility <Castle.Facilities.SubscribeToMessageFacility>(); this.container.AddFacility <InjectViewInRegionFacility>(); return(wrapper); }
protected override IServiceProvider CreateServiceProvider() { //var nss = new DelegateNamingSubSystem() //{ // SubSystemHandler = ( s, hs ) => // { // if ( hs.Any( h => h.ComponentModel.IsOverridable() ) ) // { // var nonOverridable = hs.Except( hs.Where( h => h.ComponentModel.IsOverridable() ) ); // if ( nonOverridable.Any() ) // { // return nonOverridable.Single(); // } // } // return null; // } //}; this.container = new UnityContainer(); //this.container.Kernel.AddSubSystem( SubSystemConstants.NamingKey, nss ); //in teoria Unity lo fa per i fatti suoi //this.container.Kernel.Resolver.AddSubResolver( new ArrayResolver( this.container.Kernel, true ) ); var wrapper = new ServiceProviderWrapper(this.container); this.container.RegisterInstance <IServiceProvider>(wrapper); this.container.RegisterInstance <IUnityContainer>(this.container); this.container.RegisterType <BootstrapConventions>(new ContainerControlledLifetimeManager()); this.container.AddNewExtension <SubscribeToMessageExtension>(); this.container.AddNewExtension <InjectViewInRegionExtension>(); return(wrapper); }