private CompositeContainer(CompositeRuntimeSettings runtimeSettings = null, IoC.CompositeContainer container = null) { IRuntime compositeRuntime = null; INCopDependencyAwareRegistry registry = null; INCopDependencyContainerAdapter compositeAdpater = null; this.runtimeSettings = runtimeSettings ?? CompositeRuntimeSettings.Empty; compositeAdpater = this.runtimeSettings.DependencyContainerAdapter; if (compositeAdpater.IsNotNull()) { dependencyContainer = compositeAdpater; registry = new NCopRegistryAdapter(compositeAdpater); } else { var compositeContainerAdapter = new CompositeContainerAdapter(container); registry = compositeContainerAdapter; dependencyContainer = compositeContainerAdapter; } registry = new CompositeRegistryDecorator(registry); compositeRuntime = new CompositeRuntime(this.runtimeSettings, registry); compositeRuntime.Run(); }
internal ServiceEntry CloneFor(INCopDependencyContainer container) { return new ServiceEntry { Owner = Owner, Factory = Factory, Lifetime = Lifetime, Container = container, LifetimeStrategy = Lifetime.ToStrategy(container) }; }
internal ServiceEntry CloneFor(INCopDependencyContainer container) { return(new ServiceEntry { Owner = Owner, Factory = Factory, Lifetime = Lifetime, Container = container, LifetimeStrategy = Lifetime.ToStrategy(container) }); }
private TService CloneAndResolve <TService>(ServiceKey key, ServiceEntry entry, INCopDependencyContainer container, Action <ServiceKey, ServiceEntry> registry, Func <TService> factory) { var clonedEntry = entry.CloneFor(container); registry(key, clonedEntry); var context = new ResolveContext <TService> { Key = key, Factory = factory, Entry = clonedEntry, Registry = registry, Container = container }; return(clonedEntry.LifetimeStrategy.Resolve(context)); }