private static int OnAppExecute(CommandArgument argOperator, CommandOption optMin, CommandOption optMax, CommandOption optCount) { if (argOperator.Values.Count == 0) { Console.Error.WriteLine("未指定算数类型。"); return -1; } // 简单起见,我们假设 argOperator 始终有正确的值,因此忽略参数检测 string[] operators = argOperator.Values.Select(o => { switch (o) { case "减": return "-"; case "乘": return "×"; case "除": return "÷"; case "加": default: return "+"; } }).ToArray(); int minValue, maxValue, count; if (optMin.HasValue()) { if (!int.TryParse(optMin.Value(), out minValue)) { Console.Error.WriteLine($"invalid minValue: {optMin.Value()}"); return -2; } } else { minValue = 0; } if (optMax.HasValue()) { if (!int.TryParse(optMax.Value(), out maxValue)) { Console.Error.WriteLine($"invalid maxValue: {optMax.Value()}"); return -3; } } else { maxValue = 100; } if (optCount.HasValue()) { if (!int.TryParse(optCount.Value(), out count)) { Console.Error.WriteLine($"invalid count: {optCount.Value()}"); return -4; } } else { count = 10; } Random rndForOp = new Random(); Random rnd = new Random(); int rndMaxValue = maxValue + 1; // 因为 Random 类的 Next 方法返回的值是大于等于最小值,小于最大值,因此我们需要 maxValue + 1,确保 maxValue 是可能的返回结果之一 int valueWidth = maxValue.ToString().Length; for (int i = 1; i <= count; i++) { Console.Write("{0} {1} {2} = " , rnd.Next(minValue, rndMaxValue).ToString().PadLeft(valueWidth) , operators[rndForOp.Next(0, operators.Length)] , rnd.Next(minValue, rndMaxValue).ToString().PadLeft(valueWidth)); if (i % 3 == 0) { Console.WriteLine(); } else { Console.Write("\t"); } } Console.WriteLine(); return 0; }
private void AddDotnetBaseParameters() { _app.HelpOption("-?|-h|--help"); _configurationOption = _app.Option( "-c|--configuration <CONFIGURATION>", "Configuration under which to build", CommandOptionType.SingleValue); _outputOption = _app.Option( "-o|--output <OUTPUT_DIR>", "Directory in which to find the binaries to be run", CommandOptionType.SingleValue); _buildBasePath = _app.Option( "-b|--build-base-path <OUTPUT_DIR>", "Directory in which to find temporary outputs", CommandOptionType.SingleValue); _frameworkOption = _app.Option( "-f|--framework <FRAMEWORK>", "Looks for test binaries for a specific framework", CommandOptionType.SingleValue); _runtimeOption = _app.Option( "-r|--runtime <RUNTIME_IDENTIFIER>", "Look for test binaries for a for the specified runtime", CommandOptionType.SingleValue); _projectPath = _app.Option( "-p|--project-path <PROJECT_JSON_PATH>", "Path to Project.json that contains the tool dependency", CommandOptionType.SingleValue); _command = _app.Argument( "<COMMAND>", "The command to execute."); }