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()
UseCase("web", "--enablejavascript --documentroot ~/var/local/website -r http://localhost");
UseCase("ftp", "--ftpdirectory ~/var/local/ftpsite --anonymouslogin -r ftp://myftp.server");
UseCase("not-allowed", "--enablejavascript --anonymouslogin");
[Option(SetName = "web")]
[Option(SetName = "web")]
[Option(SetName = "ftp")]
[Option(SetName = "ftp")]
public class OptionsMutuallyExclusive : IWebOptions, IFtpOptions
public string DocumentRoot
public bool EnableJavaScript
public string FtpDirectory
public bool AnonymousLogin