.net CommandLine.Parser是否支持一个选项的多次出现?

v8wbuo2f  于 2023-05-19  发布在  .NET
关注(0)|答案(1)|浏览(139)

如何使用CommandLine.Parser支持此功能?

program.exe -s file1 -t file2 -t file3
7kjnsjlb

7kjnsjlb1#

是的。使用IEnumerable可以做到这一点:

class Program
{
    static void Main(string[] args)
    {
        args = new[] { "-s", "sourceFile", "-t", "targetFile1", "targetFile2" };

        Parser.Default.ParseArguments<MyOptions>(args).WithParsed(o =>
        {
            foreach (var target in o.Targets)
            {
                Console.WriteLine(target);
            }
        });

        Console.ReadKey();
    }
}

internal class MyOptions
{
    [Option('s')]
    public string Source { get; set; }

    [Option('t')]
    public IEnumerable<string> Targets { get; set; }
}

最酷的是,你甚至可以使用FileInfoDirectoryInfoCommandLine.Option属性。

支持同一个选项的多个示例

args = new[] { "-s", "sourceFile", "-t", "targetFile1", "targetFile2", "-t", "targetFile3" };

Parser parser = new Parser(settings =>
{
    settings.AllowMultiInstance = true;
});

parser.ParseArguments<MyOptions>(args).WithParsed(...

相关问题