private object[] GetArguments(ConsoleCommand executableCommand) { var parameters = new object[executableCommand.ArgumentCount]; if (arguments.Count < executableCommand.ArgumentCount) { throw new InvalidOperationException("Not enough number of arguments."); } for (byte i = 0; i < executableCommand.ArgumentCount; i++) { if (!ParsingUtility.TryParse(arguments[i], executableCommand.GetArgumentType(i), out var parsedParameter)) { throw new InvalidCastException($"Could not correctly parse the argument {arguments[i]} as {executableCommand.GetArgumentType(i)}."); } parameters[i] = parsedParameter; } return(parameters); }
private static bool TryConvertToCommand(this MethodInfo mi, out ConsoleCommand command) { var parameters = mi.GetParameters(); var parametersCount = parameters.Length; if (parametersCount > ConsoleCommand.MAX_SUPPORTED_ARGUMENTS) { command = null; return(false); } for (var i = 0; i < parametersCount; i++) { if (ConsoleCommand.IsTypeSupported(parameters[i].ParameterType)) { continue; } command = null; return(false); } command = new ConsoleCommand(mi, parameters); return(true); }