commandlineparser / commandlineparser/commandline
Error parsing with IgnoreUnknownArguments to true and IEnumerable<int> option
- 主要语言
- C#
- 星标
- 4.8k
- 派生
- 478
- PR 合并指标
- 30 天内没有已合并 PR
描述
Hi. I am having problems similar to described in #776 but working with version 2.9.1.
My scenario is this:
```csharp
using CommandLine;
namespace QuickStart
{
class Program
{
public class Options
{
[Option('i', "input", Required = true, HelpText = "The name of the videos to split. E.g. media split -i file1.mp4 file2.mp4")]
public IEnumerable Input { get; set; } = new List();
[Option('s', "seconds", Required = true, HelpText = "A space separated list of seconds to split the video. E.g. media split -s 5 10")]
public IEnumerable Seconds { get; set; } = new List();
}
static void Main(string[] args)
{
new Parser(with => { with.IgnoreUnknownArguments = true; })
.ParseArguments(args)
.WithParsed(o =>
{
Console.WriteLine("Quick Start Example!");
})
.WithNotParsed(errors =>
{
foreach (var e in errors)
{
Console.WriteLine($"Error: {e}");
}
});
}
}
}
```
Being IgnoreUnknownArguments = true when I pass more parameters (ex. `--input c:\temp\test.mp4 --seconds 2 4 --test1 xxxx`) it returns
```
Error: CommandLine.BadFormatConversionError
Error: CommandLine.MissingRequiredOptionError (in seconds option)
```
If I change the type of Seconds to `IEnumerable` it works correctly (this is going to be my workaround at this moment) but seems like library continues going crazy trying to parse unknown arguments in this scenario.
贡献指南
这个仓库没有索引到贡献指南
调研方向
从 Parser configuration 和 ParseArguments 开始,使用提供的 Options 类,启用 IgnoreUnknownArguments,并将 IEnumerable 用于 Seconds。重现包含 --test1 xxxx 的命令,然后验证未知参数会被忽略,且不会为 seconds 产生 BadFormatConversionError 或 MissingRequiredOptionError。
由索引模型根据 Issue 内容生成。
评估
- 技术栈
- csharp
- 领域
- cli
- Issue 类型
- 缺陷
- 难度
- 3/5
- 预计耗时
- 1-2 天
- 活跃度
- 停滞
- 描述清晰度
- 基本清楚
- 新手友好度
- 45/100