public void Install(IUnityContainer container, BootstrapConventions conventions, IEnumerable <Type> allTypes) { allTypes .Where(t => conventions.IsService(t) && !conventions.IsExcluded(t)) .Select(type => { return(new { Contracts = conventions.SelectServiceContracts(type), TypeTo = type }); }) .ForEach(r => { /* * questa è una magagna perchè Unity non ci consente la registrazione dei forwarder * ed è un macello perché anche se riuscissimo ad iniettare una policy che "conosce" * i forwarder ci scontriamo con il fatto che le build-key, in apparenza, infilate nella * ContainerRegistration vengono risolte immediatamente all'avvio e non on-demend, ergo * non abbiamo come in Castle il concetto di "attesa" per le dipendenze. */ container.RegisterType(r.TypeTo, r.TypeTo, new ContainerControlledLifetimeManager(), new CandidateConstructorSelector(container)); foreach (var contract in r.Contracts) { container.RegisterType(contract, new InjectionFactory(c => { return(c.Resolve(r.TypeTo)); })); } }); }
public void Install( IUnityContainer container, BootstrapConventions conventions, IEnumerable<Type> allTypes ) { allTypes .Where( t => conventions.IsService( t ) && !conventions.IsExcluded( t ) ) .Select( type => { return new { Contracts = conventions.SelectServiceContracts( type ), TypeTo = type }; } ) .ForEach( r => { /* * questa è una magagna perchè Unity non ci consente la registrazione dei forwarder * ed è un macello perché anche se riuscissimo ad iniettare una policy che "conosce" * i forwarder ci scontriamo con il fatto che le build-key, in apparenza, infilate nella * ContainerRegistration vengono risolte immediatamente all'avvio e non on-demend, ergo * non abbiamo come in Castle il concetto di "attesa" per le dipendenze. */ container.RegisterType( r.TypeTo, r.TypeTo, new ContainerControlledLifetimeManager(), new CandidateConstructorSelector( container ) ); foreach ( var contract in r.Contracts ) { container.RegisterType( contract, new InjectionFactory( c => { return c.Resolve( r.TypeTo ); } ) ); } } ); }
public void Configure(ContainerBuilder builder, BootstrapConventions conventions, IEnumerable <Assembly> assemblies) { assemblies.SelectMany(a => a.GetTypes()) .Where(t => conventions.IsService(t) && !conventions.IsExcluded(t)) .Select(t => new { Contracts = conventions.SelectServiceContracts(t), Implementation = t }) .ForEach(r => { builder.RegisterType(r.Implementation).As(r.Contracts.ToArray()).SingleInstance(); }); //.Configure( r => r.Overridable() ) }
public void Configure( ContainerBuilder builder, BootstrapConventions conventions, IEnumerable<Assembly> assemblies ) { assemblies.SelectMany( a => a.GetTypes() ) .Where( t => conventions.IsService( t ) && !conventions.IsExcluded( t ) ) .Select( t => new { Contracts = conventions.SelectServiceContracts( t ), Implementation = t } ) .ForEach( r => { builder.RegisterType( r.Implementation ).As( r.Contracts.ToArray() ).SingleInstance(); } ); //.Configure( r => r.Overridable() ) }