Skip to content

Configuration

Matthias Beerens edited this page Nov 5, 2019 · 4 revisions

Configuration

There are two ways of configuring the options.

Fluent API

using MatthiWare.CommandLine;

static int Main(string[] args)
{
    var parser = new CommandLineParser<OptionsModel>();

    parser.Configure(opt => opt.Message)
        .Name("m", "message")
        .Required();

    parser.Configure(opt => opt.Port)
        .Name("p", "port")
        .Default(8080);

    var result = parser.Parse(args);

    if (result.HasErrors)
    {
        Console.Error.WriteLine(result.Error);
        Console.ReadKey();

        return -1;
    }

    var options = result.Result;

    Console.WriteLine($"Message: {options.Message}");
    Console.WriteLine($"Port: {options.Port}");

    Console.ReadKey();

    return 0;
}

public class OptionsModel
{
    public string Message { get; set; } // Mandatory

    public int Port { get; set; } // Optional
}

Attributes

using MatthiWare.CommandLine;

static int Main(string[] args)
{
    var parser = new CommandLineParser<OptionsModel>();

    var result = parser.Parse(args);

    if (result.HasErrors)
    {
        Console.Error.WriteLine(result.Error);
        Console.ReadKey();

        return -1;
    }

    var options = result.Result;

    Console.WriteLine($"Message: {options.Message}");
    Console.WriteLine($"Port: {options.Port}");

    Console.ReadKey();

    return 0;
}

public class OptionsModel
{
    [Required, Name("m", "message")]
    public string Message { get; set; } // Mandatory

    [Name("p", "port"), DefaultValue(8080)]
    public int Port { get; set; } // Optional
}

Usage

Input:
> Example.exe -m "My Message" -p 1234

Output:
Message: My Message
Port: 1234

Note

Fluent API will overwrite attributes.

Clone this wiki locally