命令行分析器库 - 布尔参数

Seb*_* S. 15 c# nuget-package command-line-parser

我尝试将一个布尔参数传递给控制台应用程序,并使用命令行解析器库处理该值.

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

我试图将参数传递为

-c false
-c False
-c "false"
-...
Run Code Online (Sandbox Code Playgroud)

没有差异,每次尝试我得到"true"的价值.

任何人都可以告诉我如何传递参数来获取布尔false值?

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

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

kle*_*lev 27

bool? 以你想要的方式行事

和 :

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

结果将是:

-c false // -> false
-c true  // -> true
-c       // -> error
         // -> error if Required = true, null otherwise
Run Code Online (Sandbox Code Playgroud)


arn*_*e.z 23

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

  • 如果默认为'True'怎么样,这个参数怎么有意义呢?由于默认值,未指定它意味着'True',指定它意味着'True',因为已指定. (9认同)
  • 恕我直言,这看起来像是设计错误 (3认同)