/// <summary> /// Initializes a new instance of <see cref="BaseServiceFactory"/> class with specified parameters. /// </summary> /// <param name="namespaces">The array of namespaces to be searched for services.</param> /// <param name="assemblies">The array of assemblies to be searched for services.</param> /// <param name="strictMode">The value indicating whether strict mode is on or off, if strict mode is true then /// system throws an exception if a contract is implemented by more than one service. this prevents the duplicate /// implementation. /// </param> /// <param name="dependencyFactory">The dependency factory of the current service factory.</param> /// <param name="sharedFactory">The shared factory of the current service factory.</param> public BaseServiceFactory(string[] namespaces, Assembly[] assemblies, bool strictMode, IDependencyFactory dependencyFactory, ISharedFactory sharedFactory) { ServicesMapTable = new ContractServiceAutoMapper(namespaces, assemblies, strictMode); ServicesMapTable.Map(); DependencyFactory = dependencyFactory; SharedFactory = sharedFactory; }
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> /// Initializes a new instance of <see cref="SubcontractFactory"/> class with specified parameters /// <paramref name="namespaces"/>, <paramref name="assemblies"/> and <paramref name="strictMode"/>. /// </summary> /// <param name="namespaces">The array of namespaces to be searched in for services.</param> /// <param name="assemblies">The array of assemblies to be searched in for services.</param> /// <param name="strictMode">The value indicating whether strict mode is on or off, if strict mode is true then /// system throws an exception if a contract is implemented by more than one service. this prevents the duplicate /// implementation. /// </param> /// <param name="dependencyFactory"></param> /// <param name="sharedFactory"></param> public SubcontractFactory(string[] namespaces, Assembly[] assemblies, bool strictMode, IDependencyFactory dependencyFactory, ISharedFactory sharedFactory) : base(namespaces, assemblies, strictMode, dependencyFactory, sharedFactory) { }
/// <summary> /// Initializes a new instance of <see cref="DefaultServiceFactory"/> class with specified parameters. /// </summary> /// <param name="namespaces">Specify array of namespaces where services to be searched within specified assemblies.</param> /// <param name="assemblies">Specify array of assemblies where services to be searched.</param> /// <param name="strictMode">The value indicating whether strict mode is on or off, if strict mode is true then /// system throws an exception if a contract is implemented by more than one service. this prevents the duplicate /// implementation. /// </param> /// <param name="dependencyFactory">The dependency factory of the current service factory.</param> /// <param name="sharedFactory">The shared factory of the current service factory.</param> public DefaultServiceFactory(string[] namespaces, Assembly[] assemblies, bool strictMode, IDependencyFactory dependencyFactory, ISharedFactory sharedFactory) : base(namespaces, assemblies, strictMode, dependencyFactory, sharedFactory) { }