internal PluginGraph BuildGraph() { ConfigurationParser[] parsers = _parserBuilder.GetParsers(); var builder = new PluginGraphBuilder(parsers, _registries.ToArray(), _log); return(builder.Build()); }
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())); } }
// Only used in testing public static PluginGraph BuildFromXml(XmlDocument document) { var log = new GraphLog(); ConfigurationParser[] parsers = ConfigurationParserBuilder.GetParsers(document.DocumentElement, log); var builder = new PluginGraphBuilder(parsers, new Registry[0], log); return(builder.Build()); }
// Only used in testing public static PluginGraph BuildFromXml(XmlDocument document) { var log = new GraphLog(); ConfigurationParser[] parsers = ConfigurationParserBuilder.GetParsers(document.DocumentElement, log); var builder = new PluginGraphBuilder(parsers, new Registry[0], log); return builder.Build(); }
/// <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(); } }
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(); }
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) { 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 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; } }
public static PluginGraph BuildGraphFromAssembly(Assembly assembly) { var builder = new PluginGraphBuilder(); var scanner = new AssemblyScanner(); scanner.Assembly(assembly); builder.AddScanner(scanner); return builder.Build(); }
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(); }
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())); } }