You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用CommandLineParser捕获控制台应用无名参数的实现方法咨询

解决方法

CommandLineParser原生支持捕获无选项前缀的位置参数,具体操作如下:

  1. 修改你的ArgumentOptions参数配置类,添加用Value特性修饰的属性来接收无名参数:
using CommandLine;
using System.Collections.Generic;

public class ArgumentOptions
{
    // 保留你原有定义的所有带前缀的选项,例如:
    [Option('v', "verbose", Required = false, HelpText = "启用详细输出")]
    public bool Verbose { get; set; }
    // 其他你已定义的-p、--restart等选项照常保留即可
    
    // 新增属性捕获所有未匹配到选项前缀的位置参数
    [Value(0)]
    public IEnumerable<string> UnnamedParams { get; set; }
}
  1. 解析后直接读取该属性即可获取所有无名参数,你提供的参数示例中的nginx就会被收集到UnnamedParams集合中:
.WithParsed<ArgumentOptions>(o =>
{
    // 遍历所有无名参数
    foreach (var param in o.UnnamedParams)
    {
        Console.WriteLine($"无名参数:{param}");
    }
    // 原有逻辑不变
});

补充说明

  • 如果你有固定顺序的多个无名参数,可以分别定义多个带Value特性的属性,索引从0开始递增:
    [Value(0)]
    public string ImageName { get; set; } // 第一个无名参数存镜像名
    [Value(1)]
    public string Command { get; set; } // 第二个无名参数存启动命令
    
  • 如果需要同时忽略未定义的带前缀选项,可以将Parser配置中的IgnoreUnknownArguments设为true。

内容的提问来源于stack exchange,提问作者Lukas Gund

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 12:15:03