예제 #1
0
        /// <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;
        }
예제 #2
0
        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);
        }
예제 #3
0
 /// <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)
 {
 }