Command Line Parser Library - Boolean Parameter

Viewed 14719

I try to pass a boolean parameter to a console application and process the value with the Command Line Parser Library.

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

I tried to pass the parameter as

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

There are no differences, on each try I get "true" as value.

Can anyone tell me how I have to pass the parameter to get the boolean false value?

To avoid possible asks, there is a string option which is passed correctly:

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

bool? behaves the way you want

with :

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

the result will be :

-c false // -> false
-c true  // -> true
-c       // -> error
         // -> error if Required = true, null otherwise

Here is a work-around to consider:

Change the names of the options so false is always the default. If you want "close window" to be the default, then the name of the option becomes -w "keepWindowOpen".

Related