Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 控制台行中的读取(未命名)参数_C#_Command Line - Fatal编程技术网

C# 控制台行中的读取(未命名)参数

C# 控制台行中的读取(未命名)参数,c#,command-line,C#,Command Line,由于ConsoleFx似乎进展太慢(糟糕,它有很大的潜力),而且每次构建都会显示出太多破坏性的更改,我决定切换到Mono.Options以满足命令行解析的需要 我的OptionSet采用以下方法构建 private static OptionSet BuildOptionSet() { OptionSet optionSet = new OptionSet() .Add("?|help|h", "Prints out the options", option =>

由于ConsoleFx似乎进展太慢(糟糕,它有很大的潜力),而且每次构建都会显示出太多破坏性的更改,我决定切换到Mono.Options以满足命令行解析的需要

我的OptionSet采用以下方法构建

private static OptionSet BuildOptionSet()
{
    OptionSet optionSet = new OptionSet()
        .Add("?|help|h", "Prints out the options", option => help = option != null)
        .Add("w|wait", "Waits for any key after finished processing", option => wait)
    return optionSet;
}
我找到的所有教程都涉及选项以及如何捕获它们,但从未提及参数

例如,下面的调用

c:\>test.exe brandCode1 brandCode2 /w c:\>test.exe brandCode1 brandCode2/w 应该将wait设置为true,并给我两个值为brandCode1和brandCode2的参数。 如何从args[]以干净的方式捕获它们


这在Mono.Options中是不可能的吗?

从阅读文档中可以看出,您需要在某个时候调用
OptionSet
的方法。当您这样做时,它会处理您的操作并返回“一个包含所有未处理参数的
列表”

不幸的是,您还需要将main方法的参数传递给它,以使其工作

List<string> extra = optionSet.Parse(args);
List extra=optionstart.Parse(args);

编辑:如果我的链接(仍然)不起作用,parse应该链接到

,从我阅读文档中可以看出,您需要在某个时候调用
OptionSet
的方法。当您这样做时,它会处理您的操作并返回“一个包含所有未处理参数的
列表”

不幸的是,您还需要将main方法的参数传递给它,以使其工作

List<string> extra = optionSet.Parse(args);
List extra=optionstart.Parse(args);

编辑:如果我的链接(仍然)不起作用,解析应该链接到

这是真的。我想你也可以为未处理的选项设置一个处理程序,但我自己从来没有尝试过。老实说,我在这一次只使用了文档,因为我没有使用Mono选项,当我看到它在你运行parse时返回未处理的选项时,我只是认为这是唯一的方法。呵呵,我有,甚至在MS.NET中;)这似乎确实有效。遗憾的是,这将参数数量等的测试留给了客户机库。好的,没什么大不了的。另外,如果使用WriteOptionDescriptions(),则需要在上面添加未命名参数的描述。更糟糕的是,无法识别的选项列表将包含您没有明确添加到选项集中的所有内容。因此,在您的示例中,如果您说“test.exe brandCode1/x/w”,您将得到brandCode1和/x作为无法识别的选项:(这是真的。我想你也可以为未处理的选项设置一个处理程序,但我自己从来没有尝试过。老实说,我在这一次只使用了文档,因为我没有使用Mono选项,当我看到它在运行parse时返回未处理的选项时,我只是认为这是唯一的方法。呵呵,我有,甚至在MS.NET中;)这似乎确实有效。遗憾的是,这将参数数量等的测试留给了客户机库。好吧,没有什么大不了的。另外,如果使用WriteOptionDescriptions(),您需要在上面添加未命名参数的说明。更糟糕的是,未识别的选项列表将包含您未明确添加到选项集的所有内容。因此,在您的示例中,如果您说“test.exe brandCode1/x/w”,您将获得brandCode1和/x作为未识别的选项:(