【问题标题】:C#: CommandLineParser, how to pass an array of strings?C#:CommandLineParser,如何传递字符串数组?
【发布时间】:2022-08-22 18:00:47
【问题描述】:

我正在使用CommandLineParser,我想传递多个参数,这些参数应该以单个数组结尾。这是我的课:

public class ClientConfig : Config
{

    [Option(\"load\")]
    public string[]? Load { get; set; }

}

当我使用以下命令行时:

my.exe --load=1 --load=2 --load=3

解析时,我的“加载”属性应如下所示:[\"1\", \"2\", \"3\"]。但是,当我尝试这个时,我得到以下异常:

System.InvalidOperationException: \'序列不包含元素\'

我怎样才能解决这个问题?

  • 您是否尝试过使用Separator Property from the wiki
  • @Andrew不,我会尝试,但严格来说,这并不能回答问题
  • 这就是为什么我没有将其发布为答案,只是询问您是否尝试过。如果您从文档中得到答案,请随时 answer your own question
  • 我已经更新了我的答案。

标签: c# .net command-line-arguments


【解决方案1】:

在文档中,它使用IEnumerable 作为字符串数组,因此通过这个ClientConfig:

 public class ClientConfig
    {
        [Option("load")]
        public IEnumerable<string> Load { get; set; }

    }

这对我有用:

my.exe --load 1 2 3

【讨论】:

  • 嗨,这不起作用,解析器输出“ Option 'load:0' is unknown. Option 'load:1' is unknown. Option 'load:2' is unknown.”
  • 让我再检查一次
【解决方案2】:

装饰器应该是 OptionList!

public class ClientConfig
{
   [OptionList("load")]
   public IEnumerable<string> Load { get; set; }
}

然后像这样使用它: my.exe --load 1 2 3

当它是Option 时,我得到了空参数,但使用OptionList 它有效。 希望能帮助到你

【讨论】:

    猜你喜欢
    • 2017-04-05
    • 1970-01-01
    • 2014-09-23
    • 2015-12-23
    • 2010-12-15
    • 2016-10-25
    • 1970-01-01
    • 2015-09-09
    • 2019-03-18
    相关资源
    最近更新 更多