예제 #1
0
        internal static object Invoke(this Delegate target, object[] arguments)
        {
            if (target.Arity() == 1)
            {
                var param = target.Method.GetParameters()[0].ParameterType;

                if (param.TypeIsArray() && (arguments.Length != 1 || arguments.Length == 1 && (arguments[0].IsNotNull() && !arguments[0].IsArray())))
                {
                    arguments = new[] { arguments };
                }
            }

            try {
                return(target.DynamicInvoke(arguments.Clip(target)));
            }
            catch (TargetInvocationException ex) {
                throw ex.InnerException;
            }
        }