Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 解析器是否支持一个选项的多次出现?_C#_.net_Command Line Parser - Fatal编程技术网

C# 解析器是否支持一个选项的多次出现?

C# 解析器是否支持一个选项的多次出现?,c#,.net,command-line-parser,C#,.net,Command Line Parser,我如何支持使用此选项 。这在IEnumerable中是可能的: class Program { static void Main(string[] args) { args = new[] { "-s", "sourceFile", "-t", "targetFile1", "targetFile2" }; Parser.Default.ParseArguments<MyOptions>(args).WithParsed(o =>

我如何支持使用此选项

。这在
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; }
}
类程序
{
静态void Main(字符串[]参数)
{
args=new[]{“-s”、“sourceFile”、“-t”、“targetFile1”、“targetFile2”};
Parser.Default.ParseArguments(args).WithParsed(o=>
{
foreach(o.Targets中的var目标)
{
控制台写入线(目标);
}
});
Console.ReadKey();
}
}
内类肌肽
{
[选项('s')]
公共字符串源{get;set;}
[选项('t')]
公共IEnumerable目标{get;set;}
}
最酷的是,您甚至可以使用
FileInfo
DirectoryInfo
以及
CommandLine.Option
属性。这在
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; }
}
类程序
{
静态void Main(字符串[]参数)
{
args=new[]{“-s”、“sourceFile”、“-t”、“targetFile1”、“targetFile2”};
Parser.Default.ParseArguments(args).WithParsed(o=>
{
foreach(o.Targets中的var目标)
{
控制台写入线(目标);
}
});
Console.ReadKey();
}
}
内类肌肽
{
[选项('s')]
公共字符串源{get;set;}
[选项('t')]
公共IEnumerable目标{get;set;}
}

最酷的是,您甚至可以使用
FileInfo
DirectoryInfo
以及
CommandLine.Option
属性。您需要两次
-t
开关吗?@kapsiR Ha OK,只需使用集合来支持选项即可。谢谢,这就是我要找的。不,我不需要几次明确的回答-t。如果你认为我的答案对你有效的话,那就太好了。您需要两次
-t
开关吗?@kapsiR Ha OK,只需使用集合来支持选项即可。谢谢,这就是我要找的。不,我不明确地需要-t几次。如果你将我的答案标记为已接受的答案,如果它对你有效,那就太好了。问题是,你的答案不能解决问题,因为作者要求一个选项应该出现多次,而且
-txy
-tx-ty
不一样,这似乎失败了,即使wiki声明它应该与版本2.9+一起使用。@virustinity:这就是为什么我首先通过评论询问问题的作者;)问题是,你的答案并不能解决这个问题,因为作者要求一个选项应该出现多次,而且
-txy
-tx-ty
不一样,即使wiki声明它应该与版本2.9+一起使用,它似乎也会失败。@virustinity:这就是为什么我通过首先是评论;)