Example #1
0
        bool Execute(string[] args)
        {
            List <object> invokeArgs;
            int           argsCount = args.Length;

            ParameterInfo[] parameters = m_actionDelegate.Method.GetParameters();
            if (parameters.Length > 0 && parameters[0].ParameterType == typeof(CCommand))
            {
                string[] trimmedArgs = new string[args.Length - 1];
                Array.Copy(args, 1, trimmedArgs, 0, trimmedArgs.Length);

                ParameterInfo[] trimmedParameters = new ParameterInfo[parameters.Length - 1];
                Array.Copy(parameters, 1, trimmedParameters, 0, trimmedParameters.Length);

                invokeArgs = CCommandUtils.ResolveInvokeParameters(trimmedParameters, trimmedArgs);
                invokeArgs.Insert(0, this);

                ++argsCount;
            }
            else
            {
                invokeArgs = CCommandUtils.ResolveInvokeParameters(m_actionDelegate.Method.GetParameters(), args);
            }

            if (!CCommandUtils.CanInvokeMethodWithArgsCount(m_actionDelegate.Method, argsCount))
            {
                PrintError("Wrong number of arguments");
                PrintUsage();
                return(false);
            }

            return(CCommandUtils.Invoke(m_actionDelegate, invokeArgs.ToArray()));
        }
Example #2
0
 private string GetArgsUsage()
 {
     return(CCommandUtils.GetMethodParamsUsage(m_actionDelegate.Method));
 }