Example #1
0
        private UnityDependencyContainer(string scopeName, DependencyDefinitionCollection definitions, IUnityContainer unityContainer)
        {
            Ensure.NotNull(unityContainer, "unityContainer");
            this.unityContainer = unityContainer;
            this.definitions    = definitions;

            unityContainer.RegisterInstance <IDependencyProvider>(this, new ExternallyControlledLifetimeManager());
            unityContainer.RegisterInstance <IDependencyContainer>(this, new ExternallyControlledLifetimeManager());
        }
        private bool CanBeInitialized(ProfilingTypeFacade item, List <ProfilingTypeFacade> sortedItems)
        {
            DependencyDefinitionCollection dependencies = item.Definition.Dependencies;

            //Item doesn't have dependencies
            if (dependencies.Count == 0)
            {
                return(true);
            }
            foreach (DependencyDefinition dependency in dependencies)
            {
                //Some of the dependencies are still not in the list of sorted items - we cannot initialize current ProfilingType
                if (!ContainsItem(sortedItems, dependency))
                {
                    return(false);
                }
            }
            return(true);
        }
        private SimpleDependencyContainer(string scopeName, SimpleDependencyContainer parentContainer)
        {
            Ensure.NotNullOrEmpty(scopeName, "scopeName");
            this.scopeName       = scopeName;
            this.parentContainer = parentContainer;

            InstanceStorage instances = new InstanceStorage();

            if (parentContainer == null)
            {
                this.definitions = new DependencyDefinitionCollection(scopeName, instances);
            }
            else
            {
                this.definitions = new DependencyDefinitionCollection(scopeName, instances, parentContainer.definitions);
            }

            this.resolver = new InstanceResolver(definitions, instances);

            definitions.Add(typeof(IDependencyContainer), DependencyLifetime.NameScope(scopeName), this);
            definitions.Add(typeof(IDependencyProvider), DependencyLifetime.NameScope(scopeName), this);
        }