Create <TArg1, TArg2, TArg3, TArg4, TArg5, TArg6, TArg7, TArg8, TArg9, TArg10, TArg11, TArg12, TArg13, TArg14, TArg15, TArg16, TService>(IResolutionRoot resolutionRoot)
        {
            Type type;
            var  convertFunction = GetConvertionFunction <TService>(out type);

            return((arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12, arg13, arg14, arg15, arg16) =>
                   Get(
                       resolutionRoot,
                       convertFunction,
                       type,
                       FuncConstructorArgumentFactory.CreateFuncConstructorArgument(typeof(TArg1), arg1),
                       FuncConstructorArgumentFactory.CreateFuncConstructorArgument(typeof(TArg2), arg2),
                       FuncConstructorArgumentFactory.CreateFuncConstructorArgument(typeof(TArg3), arg3),
                       FuncConstructorArgumentFactory.CreateFuncConstructorArgument(typeof(TArg4), arg4),
                       FuncConstructorArgumentFactory.CreateFuncConstructorArgument(typeof(TArg5), arg5),
                       FuncConstructorArgumentFactory.CreateFuncConstructorArgument(typeof(TArg6), arg6),
                       FuncConstructorArgumentFactory.CreateFuncConstructorArgument(typeof(TArg7), arg7),
                       FuncConstructorArgumentFactory.CreateFuncConstructorArgument(typeof(TArg8), arg8),
                       FuncConstructorArgumentFactory.CreateFuncConstructorArgument(typeof(TArg9), arg9),
                       FuncConstructorArgumentFactory.CreateFuncConstructorArgument(typeof(TArg10), arg10),
                       FuncConstructorArgumentFactory.CreateFuncConstructorArgument(typeof(TArg11), arg11),
                       FuncConstructorArgumentFactory.CreateFuncConstructorArgument(typeof(TArg12), arg12),
                       FuncConstructorArgumentFactory.CreateFuncConstructorArgument(typeof(TArg13), arg13),
                       FuncConstructorArgumentFactory.CreateFuncConstructorArgument(typeof(TArg14), arg14),
                       FuncConstructorArgumentFactory.CreateFuncConstructorArgument(typeof(TArg15), arg15),
                       FuncConstructorArgumentFactory.CreateFuncConstructorArgument(typeof(TArg16), arg16)));
        }
        /// <summary>
        /// Creates a new Func that creates a new <typeparamref name="TService"/> instance using the specified resolution root.
        /// </summary>
        /// <typeparam name="TArg1">The type of the 1st argument.</typeparam>
        /// <typeparam name="TService">The type of the created service.</typeparam>
        /// <param name="resolutionRoot">The resolution root.</param>
        /// <returns>
        /// The new instance of <typeparamref name="TService"/> created using the resolution root.
        /// </returns>
        public Func <TArg1, TService> Create <TArg1, TService>(IResolutionRoot resolutionRoot)
        {
            var convertFunction = GetConvertionFunction <TService>(out Type type);

            return(arg1 => Get(
                       resolutionRoot,
                       convertFunction,
                       type,
                       FuncConstructorArgumentFactory.CreateFuncConstructorArgument(typeof(TArg1), arg1)));
        }
        Create <TArg1, TArg2, TArg3, TArg4, TService>(IResolutionRoot resolutionRoot)
        {
            var convertFunction = GetConvertionFunction <TService>(out Type type);

            return((arg1, arg2, arg3, arg4) =>
                   Get(
                       resolutionRoot,
                       convertFunction,
                       type,
                       FuncConstructorArgumentFactory.CreateFuncConstructorArgument(typeof(TArg1), arg1),
                       FuncConstructorArgumentFactory.CreateFuncConstructorArgument(typeof(TArg2), arg2),
                       FuncConstructorArgumentFactory.CreateFuncConstructorArgument(typeof(TArg3), arg3),
                       FuncConstructorArgumentFactory.CreateFuncConstructorArgument(typeof(TArg4), arg4)));
        }