当前位置: 首页 > news >正文

C# 命令行参数解析库示例

写在前面

在日常开发中,我们经常会用到命令行参数,比如cmd下的各种指令;还有C#的控制台类型的项目,在默认入口Main函数中,那个args参数,就是有系统传入到程序进程的命令行参数;在传入的参数相对简单的情况下,默认的字符串数组还是够用的,但是如果需要构建更复杂的命令行参数时,通过字符串数组来实现就很麻烦了,特别是要实现类似 Linux 系统中的那种结构化指令,如下列所示:

iptables -I INPUT -p tcp --dport 9090 -j ACCEPT 

在C#的技术栈中可以使用System.CommandLine这个专门的命令行参数解析库来实现。

老规矩通过NuGet获取该类库:

需要说明的是由于项目还是处于beta状态,所以要把包括预发型版选项勾起来才能找到。

代码实现

using System.CommandLine;class Program
{static async Task Main(string[] args){var delayOption = new Option<int>(name: "--delay",description: "An option whose argument is parsed as an int.",getDefaultValue: () => 42);var messageOption = new Option<string>("--message", "An option whose argument is parsed as a string.");var rootCommand = new RootCommand();rootCommand.Add(delayOption);rootCommand.Add(messageOption);rootCommand.SetHandler((delayOptionValue, messageOptionValue) =>{Console.WriteLine($"--delay = {delayOptionValue}");Console.WriteLine($"--message = {messageOptionValue}");},delayOption, messageOption);await rootCommand.InvokeAsync(args);}
}

这是微软官方做的一个示例代码,给它撸过来验证一下,关于命令行参数涉及到的具体概念,可以去官方项目做进一步了解。

GitHub - dotnet/command-line-api: Command line parsing, invocation, and rendering of terminal output.

How to define commands in System.CommandLine - .NET | Microsoft Learn

调用结果

http://www.lryc.cn/news/262264.html

相关文章:

  • 2020 年网络安全应急响应分析报告
  • Git----学习Git第一步基于 Windows 10 系统和 CentOS7 系统安装 Git
  • 爬虫 scrapy ——scrapy shell调试及下载当当网数据(十一)
  • Linux驱动(中断、异步通知):红外对射,并在Qt StatusBus使用指示灯进行显示
  • echarts地图的常见用法:基本使用、区域颜色分级、水波动画、区域轮播、给地图添加背景图片和图标、3d地图、飞线图
  • 进程间通讯-管道
  • 项目总结-自主HTTP实现
  • Java语言+二维数组+非递归实现五子棋游戏
  • WordCloud—— 词云
  • linux网络----UDP编程
  • [AI工具推荐]AiRestful智能API代码生成
  • Elasticsearch 8.10.0同义词API用法详解,支持同义词热更新
  • 深度学习之模型权重
  • 纯前端使用XLSX导出excel表格
  • 将mjpg格式数转化成opencv Mat格式
  • 【golang/g3n】3D游戏引擎G3N的windows安装与测试
  • sap table 获取 valuation class MBEW 查表获取
  • 介绍一些操作系统—— Ubuntu 系统
  • React中props 和 state异同初探
  • spring-kakfa依赖管理之org/springframework/kafka/listener/CommonErrorHandler错误
  • 基于go语言开发的海量用户及时通讯系统
  • 19.Oracle 中count(1) 、count(*) 和count(列名) 函数的区别
  • C 库函数 - time()
  • 基于Python数据可视化的网易云音乐歌单分析系统
  • Jenkins----基于 CentOS 或 Docker 安装部署Jenkins并完成基础配置
  • flume系列之:监控flume agent channel的填充百分比
  • 信息安全和网络安全的区别
  • 【开源项目】WPF 扩展 -- 多画面视频渲染组件
  • risc-v system instruction
  • 08 v-text指令