public static void UseCase2(string title, string argsCommand)
Console.WriteLine("------Case: " + title + "-----");
var parser = new Parser(with =>
with.HelpWriter = Console.Out;
var args = argsCommand.Split();
var result = parser.ParseArguments<Tmp>(args);
result.WithParsed(options => options.Dump()).WithNotParsed(errs => errs.Dump());
public static void UseCase(string title, string argsCommand)
Console.WriteLine("------Case: " + title + "-----");
var parser = new Parser(with =>
with.HelpWriter = Console.Out;
var args = argsCommand.Split();
var result = parser.ParseArguments<OptionsMutuallyExclusive>(args);
result.WithParsed(options => options.Dump()).WithNotParsed(errs => errs.Dump());
public static void Main()
UseCase2("InSingle", "-i 1");
UseCase2("OutSingle", "-o 1");
UseCase2("OutAll", "-o");
public class OptionsMutuallyExclusive
[Option(SetName = "web")]
public string DocumentRoot
[Option(SetName = "web")]
public bool EnableJavaScript
[Option(SetName = "ftp")]
public string FtpDirectory
[Option(SetName = "ftp")]
public bool AnonymousLogin
[Option('i', SetName = "InSingle", Required = false, Default = null)]
public int? InSingle { get; set; }
[Option('i', SetName = "InAll", Required = false, Default = false)]
public bool InAll { get; set; }
[Option('o', SetName = "OutSingle", Required = false, Default = null)]
public int? OutSingle { get; set; }
[Option('o', SetName = "OutAll", Required = false, Default = false)]
public bool OutAll { get; set; }