Exemple #1
0
        public void Configure(Action <ConfigurationExpression> configure)
        {
            var registry = new ConfigurationExpression();

            configure(registry);

            if (registry.HasPolicyChanges() && Role == ContainerRole.Nested)
            {
                throw new StructureMapConfigurationException("Policy changes to a nested container are not allowed. Policies can only be applied to the root container");
            }

            var builder = new PluginGraphBuilder(_pluginGraph);

            builder.Add(registry);

            registry.Registries.Each(x => x.As <IPluginGraphConfiguration>().Register(builder));
            registry.Registries.Each(x => builder.Add(x));

            builder.RunConfigurations();

            if (registry.HasPolicyChanges())
            {
                Instances.GetAllInstances().ToArray().Each(x => x.ClearBuildPlan());

                Profiles.AllProfiles().ToArray()
                .Each(x => x.Instances.GetAllInstances().ToArray().Each(i => i.ClearBuildPlan()));
            }
        }
Exemple #2
0
        public void Configure(Action <ConfigurationExpression> configure)
        {
            if (_pluginGraph.IsRunningConfigure)
            {
                throw new StructureMapConfigurationException("The container is already being configured. Recursive IContainer.Configure() calls are not allowed");
            }

            _pluginGraph.IsRunningConfigure = true;

            try
            {
                var registry = new ConfigurationExpression();
                configure(registry);

                var transientTracking = registry.GetTransientTracking();
                if (transientTracking != null &&
                    transientTracking != _pluginGraph.TransientTracking)
                {
                    changeTransientTracking(transientTracking.Value);
                }

                if (registry.HasPolicyChanges() && Role == ContainerRole.Nested)
                {
                    throw new StructureMapConfigurationException("Policy changes to a nested container are not allowed. Policies can only be applied to the root container");
                }

                if (registry.HasPolicyChanges())
                {
                    _pluginGraph.ClearTypeMisses();
                }

                var builder = new PluginGraphBuilder(_pluginGraph);
                builder.Add(registry);

                registry.Registries.Each(x => builder.Add(x));

                builder.RunConfigurations();

                if (registry.HasPolicyChanges())
                {
                    Instances.GetAllInstances().ToArray().Each(x => x.ClearBuildPlan());

                    Profiles.AllProfiles().ToArray()
                    .Each(x => x.Instances.GetAllInstances().ToArray().Each(i => i.ClearBuildPlan()));
                }
            }
            finally
            {
                _pluginGraph.IsRunningConfigure = false;
            }
        }
        public void Configure(Action <ConfigurationExpression> configure)
        {
            var registry = new ConfigurationExpression();

            configure(registry);

            var builder = new PluginGraphBuilder(_pluginGraph);

            builder.Add(registry);

            registry.Registries.Each(x => x.As <IPluginGraphConfiguration>().Register(builder));
            registry.Registries.Each(x => builder.Add(x));

            builder.RunConfigurations();
        }
Exemple #4
0
        /// <summary>
        ///     Used to add additional configuration to a Container *after* the initialization.
        /// </summary>
        /// <param name="configure"></param>
        public void Configure(Action <ConfigurationExpression> configure)
        {
            lock (this)
            {
                var registry = new ConfigurationExpression();
                configure(registry);

                var builder = new PluginGraphBuilder(_pipelineGraph.Outer);
                builder.Add(registry);

                builder.RunConfigurations();
            }
        }
Exemple #5
0
        public void Configure(Action <ConfigurationExpression> configure)
        {
            var registry = new ConfigurationExpression();

            configure(registry);

            var builder = new PluginGraphBuilder(_pluginGraph);

            builder.Add(registry);

            registry.Registries.Each(x => x.As <IPluginGraphConfiguration>().Register(builder));
            registry.Registries.Each(x => builder.Add(x));

            builder.RunConfigurations();

            if (registry.HasPolicyChanges())
            {
                Instances.GetAllInstances().ToArray().Each(x => x.ClearBuildPlan());

                Profiles.AllProfiles().ToArray()
                .Each(x => x.Instances.GetAllInstances().ToArray().Each(i => i.ClearBuildPlan()));
            }
        }
        public void RunConfigurations()
        {
            _configurations.Each(x => {
                x.Register(this);
                x.Configure(_graph);
            });

            _scanners.Each(x => x.ScanForTypes(_graph));

            // Recursive scanning
            if (_graph.QueuedRegistries.Any())
            {
                var builder = new PluginGraphBuilder(_graph);
                while (_graph.QueuedRegistries.Any())
                {
                    var registry = _graph.QueuedRegistries.Dequeue();
                    builder.Add(registry);
                }

                builder.Build();
            }
        }
Exemple #7
0
        public void RunConfigurations()
        {
            _configurations.Each(x => {
                x.Register(this);
                x.Configure(_graph);
            });

            _scanners.Each(x => x.ScanForTypes(_graph));

            // Recursive scanning
            if (_graph.QueuedRegistries.Any())
            {
                var builder = new PluginGraphBuilder(_graph);
                while (_graph.QueuedRegistries.Any())
                {
                    var registry = _graph.QueuedRegistries.Dequeue();
                    builder.Add(registry);
                }

                builder.Build();
            }
        }
        public void Configure(Action<ConfigurationExpression> configure)
        {
            if (_pluginGraph.IsRunningConfigure)
                throw new StructureMapConfigurationException("The container is already being configured. Recursive IContainer.Configure() calls are not allowed");

            _pluginGraph.IsRunningConfigure = true;

            try
            {
                var registry = new ConfigurationExpression();
                configure(registry);

                if (registry.HasPolicyChanges() && Role == ContainerRole.Nested)
                {
                    throw new StructureMapConfigurationException("Policy changes to a nested container are not allowed. Policies can only be applied to the root container");
                }

                if (registry.HasPolicyChanges())
                {
                    _pluginGraph.ClearTypeMisses();
                }

                var builder = new PluginGraphBuilder(_pluginGraph);
                builder.Add(registry);

                registry.Registries.Each(x => builder.Add(x));

                builder.RunConfigurations();

                if (registry.HasPolicyChanges())
                {
                    Instances.GetAllInstances().ToArray().Each(x => x.ClearBuildPlan());

                    Profiles.AllProfiles().ToArray()
                        .Each(x => x.Instances.GetAllInstances().ToArray().Each(i => i.ClearBuildPlan()));

                }
            }
            finally
            {
                _pluginGraph.IsRunningConfigure = false;
            }
        }
 internal ConfigurationExpression()
 {
     _builder.Add(this);
 }
Exemple #10
0
        public void Configure(Action<ConfigurationExpression> configure)
        {
            var registry = new ConfigurationExpression();
            configure(registry);

            var builder = new PluginGraphBuilder(_pluginGraph);
            builder.Add(registry);

            registry.Registries.Each(x => x.As<IPluginGraphConfiguration>().Register(builder));
            registry.Registries.Each(x => builder.Add(x));

            builder.RunConfigurations();
        }
Exemple #11
0
        public void Configure(Action<ConfigurationExpression> configure)
        {
            var registry = new ConfigurationExpression();
            configure(registry);

            if (registry.HasPolicyChanges() && Role == ContainerRole.Nested)
            {
                throw new StructureMapConfigurationException("Policy changes to a nested container are not allowed. Policies can only be applied to the root container");
            }

            var builder = new PluginGraphBuilder(_pluginGraph);
            builder.Add(registry);

            registry.Registries.Each(x => x.As<IPluginGraphConfiguration>().Register(builder));
            registry.Registries.Each(x => builder.Add(x));

            builder.RunConfigurations();

            if (registry.HasPolicyChanges())
            {

                Instances.GetAllInstances().ToArray().Each(x => x.ClearBuildPlan());

                Profiles.AllProfiles().ToArray()
                    .Each(x => x.Instances.GetAllInstances().ToArray().Each(i => i.ClearBuildPlan()));

            }
        }