39

我尝试将布尔参数传递给控制台应用程序并使用Command Line Parser Library处理该值。

[Option('c', "closeWindow", Required = true, HelpText = "Close the window.")]
public bool CloseWindow { get; set; }

我试图将参数传递为

-c false
-c False
-c "false"
-...

没有区别,每次尝试我都得到"true"了价值。

谁能告诉我如何传递参数来获取布尔false值?

为了避免可能的询问,有一个正确传递的字符串选项:

[Option('s', "system", Required = true, HelpText = "Any help text")]
public string System { get; set; }
4

3 回答 3

37

您无需添加TrueFalse。使用-c将评估为True. 不使用它将评估为False. 在文档的某处,有一个-v详细输出的示例。但我现在找不到。我想Required=true布尔选项不需要。

于 2016-03-08T17:26:27.640 回答
32

bool?以你想要的方式行事

和 :

[Option('c', "closeWindow", Required = true, HelpText = "Close the window.")]
public bool? CloseWindow { get; set; }

结果将是:

-c false // -> false
-c true  // -> true
-c       // -> error
         // -> error if Required = true, null otherwise
于 2019-12-19T15:10:43.140 回答
0

这是一个需要考虑的解决方法:

更改选项的名称,因此 false 始终是默认值。如果您希望“关闭窗口”成为默认值,则选项的名称变为-w "keepWindowOpen".

于 2022-01-12T14:48:58.143 回答