Example #1
0
        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();
        }
Example #2
0
 internal ServiceEntry CloneFor(INCopDependencyContainer container)
 {
     return new ServiceEntry {
         Owner = Owner,
         Factory = Factory,
         Lifetime = Lifetime,
         Container = container,
         LifetimeStrategy = Lifetime.ToStrategy(container)
     };
 }
Example #3
0
 internal ServiceEntry CloneFor(INCopDependencyContainer container)
 {
     return(new ServiceEntry {
         Owner = Owner,
         Factory = Factory,
         Lifetime = Lifetime,
         Container = container,
         LifetimeStrategy = Lifetime.ToStrategy(container)
     });
 }
Example #4
0
        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));
        }