private IDependencyFactory InitChainOfSubctractFactories(ISharedFactory sharedFactory) { ContainerDependencyOptions dependencies = _config.ContainerOptions.Dependencies; System.Collections.Generic.Stack <ContainerDependencyOptions> stack = new System.Collections.Generic.Stack <ContainerDependencyOptions>(); while (dependencies != null) { stack.Push(dependencies); dependencies = dependencies.DependencyOptions; } IDependencyFactory lastDependencyFactory = null; foreach (var item in stack) { Assembly[] subcontractAssmblies = GetAssemblies(item.Assemblies); lastDependencyFactory = new DefaultSubcontractFactory(item.Name, item.Namespaces, subcontractAssmblies, _config.ContainerOptions.StrictMode, lastDependencyFactory, sharedFactory); } return(lastDependencyFactory); }
/// <summary> /// Adds dependency assemblies. Specify the namespaces for dependencies to be searched, /// if don't want to add all available services. /// </summary> /// <param name="options"></param> public void AddDependencies(Action <ContainerDependencyOptions> options) { _dependencies = new ContainerDependencyOptions(); options(_dependencies); }