Example #1
0
        public IPipelineGraph For(string profileName, object syncLock)
        {
            if (!_profiles.ContainsKey(profileName))
            {
                lock (syncLock)
                {
                    if (!_profiles.ContainsKey(profileName))
                    {
                        var profileGraph = _pluginGraph.Profile(profileName);

                        var instances = new ComplexInstanceGraph(_root, profileGraph, ContainerRole.ProfileOrChild);
                        var pipeline  = new PipelineGraph(profileGraph, instances, _root, _root.Singletons, _root.Transients);

                        Container.CorrectSingletonLifecycleForChild(pipeline);

                        _profiles[profileName] = pipeline;
                    }
                }
            }

            return(_profiles[profileName]);
        }