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())); }
private string GetArgsUsage() { return(CCommandUtils.GetMethodParamsUsage(m_actionDelegate.Method)); }