使用CommandLine Parser nuget C#为2个不同的属性分配相同的值

时间:2016-03-06 17:04:26

标签: c# command-line command-line-parser

我有这两个属性:

[Option("IpAddress1")]
public string IpAddress1 { get; set; }
[Option("IpAddress2")]
public string IpAddress2 { get; set; }

当使用这些参数运行时:

--IpAddress1 "1.1.1.1" --IpAddress2" 1.1.1.1"

我收到“MissingValueOptionError”。

运行时:

--IpAddress1 "1.1.1.1" --IpAddress2 "1.1.1.2"

一切正常。

知道为什么吗?

CommandLineParser nuget: https://github.com/gsscoder/commandline

UPDATE1: 看起来它与设置“_.IgnoreUnknownArguments = true;”

有关
new Parser(
            _ =>
            {
                _.CaseSensitive = false;
                _.HelpWriter = helpWriter;
                _.IgnoreUnknownArguments = true;
            }).
            ParseArguments<T>(commandLineArguments).
            WithParsed(_ => parsedFromCommandLineArguments = _).
            WithNotParsed(
                _ =>
                {
                    parseSucceeded = false;
                    if (_.Any(
                        __ => __.Tag == ErrorType.HelpRequestedError ||
                              __.Tag == ErrorType.HelpVerbRequestedError))
                    {
                        isHelpRequestedDetected = true;
                    }
                });

1 个答案:

答案 0 :(得分:0)

所以它看起来像是CommandLine Parser Nuget中的一个错误。

我最终通过删除:

来解决它
_.IgnoreUnknownArguments = true;

所以现在它看起来像:

new Parser(
        _ =>
        {
            _.CaseSensitive = false;
            _.HelpWriter = helpWriter;
        })...

并添加了一个帮助方法,然后清除了我不想解析的未知参数(对我来说,他们不是以&#34; - &#34;语法开头):< / p>

var filteredCommandLineArguments = new List<string>();
var isValueExpected = false;
foreach (var commandLineArgument in commandLineArguments)
{
    if (isValueExpected)
    {
       isValueExpected = false;
       filteredCommandLineArguments.Add(commandLineArgument);
       continue;
    }
    if (commandLineArgument.StartsWith("--"))
    {
       isValueExpected = true;
       filteredCommandLineArguments.Add(commandLineArgument);
    }
}

现在,如果用户使用&#34; - &#34;输入意外值语法比它还好,否则没有。

相关问题