如何使用CommandLine.Parser支持此功能?
program.exe -s file1 -t file2 -t file3
7kjnsjlb1#
是的。使用IEnumerable可以做到这一点:
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; } }
最酷的是,你甚至可以使用FileInfo和DirectoryInfo与CommandLine.Option属性。
FileInfo
DirectoryInfo
CommandLine.Option
支持同一个选项的多个示例:
args = new[] { "-s", "sourceFile", "-t", "targetFile1", "targetFile2", "-t", "targetFile3" }; Parser parser = new Parser(settings => { settings.AllowMultiInstance = true; }); parser.ParseArguments<MyOptions>(args).WithParsed(...
1条答案
按热度按时间7kjnsjlb1#
是的。使用
IEnumerable
可以做到这一点:最酷的是,你甚至可以使用
FileInfo
和DirectoryInfo
与CommandLine.Option
属性。支持同一个选项的多个示例: