/// <summary>
        /// Merge multiple DI Factories into a single factory. If settings or object mappings collide, it will throw
        /// an InvalidOperation exception.
        /// </summary>
        /// <param name="originalContainer"></param>
        /// <param name="extraContainers"></param>
        /// <returns></returns>
        public static DIFactory Merge(DIFactory originalContainer, params DIFactory[] extraContainers)
        {
            DIFactory newFactory = new DIFactory(originalContainer);

            foreach (var container in extraContainers)
            {
                newFactory.MergeWithSelf(container);
            }

            return(newFactory);
        }