精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Dotnet Core 優雅的命令行實現

開發 前端
控制臺應用 Console,在我們開發中用處很多。小到一個簡單的功能測試,或一組不需要復雜 UI 的工具類應用,大到后端的服務,都會用到 Console。

[[409683]]

本文轉載自微信公眾號「老王Plus」,作者老王Plus的老王。轉載本文請聯系老王Plus公眾號。

前言

控制臺應用 Console,在我們開發中用處很多。小到一個簡單的功能測試,或一組不需要復雜 UI 的工具類應用,大到后端的服務,都會用到 Console。

在這里面,命令行應用 Cli,又是非常典型的一個應用類型。

命令行應用,通常概念上需要我們輸入一定參數,根據參數的不同,選擇不同的程序流程或方法來執行。

舉個簡單的例子:

  1. % python3 
  2. Python 3.9.0 (default, Nov 13 2020, 12:12:14)  
  3. [Clang 12.0.0 (clang-1200.0.32.21)] on darwin 
  4. Type "help""copyright""credits" or "license" for more information. 
  5. >>> import OS 
  6. Traceback (most recent call last): 
  7.   File "<stdin>", line 1, in <module> 
  8. ModuleNotFoundError: No module named 'OS' 
  9. >>> import os 
  10. >>> print("Hello WangPlus"
  11. Hello WangPlus 
  12. >>> exit() 

不需要管 python3 是什么,這不重要。

我們能看到,當進入一個命令行時,一般首先會有簡單的功能介紹,然后是一個提示符,在這里是 >>>。然后可以輸入命令和參數,如果輸入正確,會有錯誤提示。如果輸入正確,會有適當的輸出。

通常,如果想實現這樣的效果,我們需要一個大的循環,來解析和響應輸入的命令和參數,然后進行對應的處理。

事實上,在做這樣一個應用時,會有很大的精力來處理這個循環。不相信的話,可以自己試著寫一寫。

今天給大家介紹的,是一個庫,Nuget 上的庫,也是我最近無意中發現的,但給了我很大的驚喜。事實上,我自己在寫應用時,如果有可能,我會優先采用 Console 或 Cli 的方式來寫,輕量、快速,不用處理太多 UI 方面的工作。

這個庫叫 CommandLineTool。

下面進入正題,我從頭介紹一下這個庫的使用。

創建項目

先來創建項目。老習慣,用命令行創建:

  1. % dotnet new console -o demo -f net5.0 

這兒需要注意一下,這個庫目前支持到 Dotnet Core 5.0,所以我們就用 5.0 了。

然后,引入 CommandLineTool:

  1. % dotnet add package CommandLineTool 

就這樣,工程就算是建完了。

實現功能

這個庫最簡單的地方,是實現起來非常簡單。

第一步,先建一個類

這個類,就是我們要實現 Cli 命令行功能的類 TestCLI:

  1. [App("Demo")] 
  2. public class TestCLI 

類是空的,先不管它。

第二步,在 Program.cs 里加入這個類

  1. class Program 
  2.     static void Main(string[] args) 
  3.     { 
  4.         Cli cli = new Cli(typeof(TestCLI)) 
  5.         { 
  6.             Introduction = "這是一個 Demo 應用"
  7.             PromptText = "WangPlus"
  8.         }; 
  9.  
  10.         cli.SetCancellationKeys(new() { "exit" }); 
  11.         cli.Start(); 
  12.     } 

看一個加入的內容:

Introduction - 這個 Cli 的說明,提示一下這個程序的功能,隨便寫;

PromptText - 這個是提示符的內容,類似于最上面例子的 >>>;

下面這一句cli.SetCancellationKeys(new() { "exit" });,是定義了退出的命令。也就是說,在提示符后輸入 exit,應用就退出了。

跑一下這個應用:

  1. % dotnet demo.dll 
  2. 這是一個 Demo 應用 
  3.  
  4.  
  5. WangPlus > ? 
  6. '?' was not matched. Did you mean '-h'
  7. Unrecognized command or argument '?' 
  8.  
  9. demo 
  10.   Demo 
  11.  
  12. Usage: 
  13.   demo [options] 
  14.  
  15. Options: 
  16.   --version       Show version information 
  17.   -?, -h, --help  Show help and usage information 
  18.  
  19. WangPlus >exit 
  20. Terminating console... 

哇哈哈,一個簡單的 Cli 架子搭出來了。

第三步,開始寫命令處理

命令處理放在 TestCLI.cs 中。

  1. [App("Demo")] 
  2. public class TestCLI 
  3.     [Command("hello""就是打個招呼")] 
  4.     public static void Hello([ParamArgument()] string name
  5.     { 
  6.         Console.WriteLine($"Hello {name}"); 
  7.     } 

方法還是我們非常熟悉的一個普通方法,并沒有什么特別的。

再跑一下:

  1. WangPlus >hello 
  2. Required argument missing for command: hello 
  3.  
  4. hello 
  5.   就是打個招呼 
  6.  
  7. Usage: 
  8.   demo [options] hello <name
  9.  
  10. Arguments: 
  11.   <name
  12.  
  13. Options: 
  14.   -?, -h, --help  Show help and usage information 
  15.  
  16. WangPlus >hello wang   
  17. Hello wang 

出來效果了。

重點看一下代碼里的幾個部分:

屬性 Command,里面兩個參數,第一個參數就是我們要實現的命令,第二個參數是命令的說明。

方法里,[ParamArgument()] 表示后面跟的參數來自于輸入的命令的參數。

下面還有幾種形式:

  1. //多個參數 
  2. [Command("multiinput""多個參數")] 
  3. public static void MultiInput([ParamArgument()] List<string> names) {} 
  4.  
  5. //多個文件 
  6. [Command("multifile""多個文件")] 
  7. public static void MultiFile([ParamArgument()] List<FileInfo> files) {} 
  8.  
  9. //額外的參數 
  10. [Command("withpara""額外參數")] 
  11. public static void WithPara([ParamArgument()] string names, [ParamOption("-a")] string op1) {} 

重點說一下額外參數的方式。

有時候,我們可能需要下面的方式來處理命令:

  1. % demo -a a-value -b b-value command 

這個方式,就是來解決這樣的問題的。

有沒有 Get 到爽點?

 

本文有配套代碼,在 https://github.com/humornif/Demo-Code/tree/master/0053/demo

 

責任編輯:武曉燕 來源: 老王Plus
相關推薦

2017-08-30 19:11:38

Linux命令行tab

2020-12-11 06:44:16

命令行工具開發

2020-12-10 16:16:08

工具代碼開發

2010-11-16 11:50:21

oracle命令行登錄

2022-04-01 12:51:44

命令Containerd

2015-07-01 09:15:46

linuxQuora命令行

2010-11-24 14:51:55

Mysql命令行

2010-11-16 11:55:31

Oracle命令行

2011-01-18 19:11:26

Postfix命令行

2010-07-15 09:37:47

Perl命令行

2019-07-23 13:45:38

LinuxFedora權限

2009-07-20 09:55:30

華為命令行解析華為認證

2010-11-24 15:33:59

mysql命令行參數

2010-08-20 10:05:23

用戶命令

2010-09-01 14:23:54

Linux命令行開發

2012-02-08 16:37:36

ibmdw

2010-07-15 10:47:22

Perl命令行

2009-12-24 14:51:39

Linux命令行

2010-07-20 14:18:22

Perl命令行

2023-06-09 07:45:29

Kuberneteskubectl
點贊
收藏

51CTO技術棧公眾號

国产精品久久AV无码| 91大学生片黄在线观看| 久久精品久久久久久久| 精品一区av| 欧美久久久久久久久| 男人天堂网站在线| 十九岁完整版在线观看好看云免费| 亚洲精品孕妇| 中文一区二区视频| 免费黄色在线播放| 性欧美1819sex性高清| 国产精品久久久久久久久图文区| 亚洲在线视频福利| 91丝袜一区二区三区| 911精品美国片911久久久| 亚洲精品国产精品乱码不99按摩| 一区二区xxx| 免费影视亚洲| 国产欧美一区二区精品忘忧草| 91在线观看免费观看| 91美女免费看| 91视频综合| 亚洲精品美女视频| 肉色超薄丝袜脚交| 日韩精选视频| 亚洲成人免费在线| 亚洲在线播放电影| 青春有你2免费观看完整版在线播放高清 | 久久久综合视频| 国产精品视频精品视频| 国产精品变态另类虐交| 国产精品成人av| 亚洲天堂av综合网| 免费不卡的av| 国色天香久久精品国产一区| 91国偷自产一区二区使用方法| 日本wwwcom| 国产在线观看免费麻豆| 国产色一区二区| 国产女主播一区二区| 99草在线视频| 久久se精品一区精品二区| 欧美一级大片视频| 国产一级在线视频| 永久亚洲成a人片777777| 在线观看国产精品淫| 蜜桃精品一区二区| 欧美美女啪啪| 精品国产乱码久久| 亚洲精品久久一区二区三区777| 欧美成人毛片| 欧美日韩中文精品| 成人黄色一区二区| 黑人巨大亚洲一区二区久| 五月天中文字幕一区二区| 日韩中文字幕在线不卡| av毛片在线看| 亚洲精品免费在线播放| 精品日韩在线播放| 菠萝蜜视频国产在线播放| 中文字幕一区二区三区四区| 亚洲成色最大综合在线| 岛国大片在线观看| 久久精品一二三| 欧美一区亚洲二区| 国产在线一二三区| 国产女主播一区| 视频一区国产精品| avtt亚洲| 中文字幕日本不卡| 特色特色大片在线| 欧美寡妇性猛交xxx免费| 亚洲一区在线看| 国产一级爱c视频| 成人一级福利| 欧美性xxxx在线播放| 很污的网站在线观看| 国产直播在线| 色综合久久久久综合99| 一区二区在线播放视频| 日韩久久99| 日韩欧美国产三级电影视频| 亚洲成av人片在线观看无| 亚洲人挤奶视频| 国产一区二区精品丝袜| 国产免费久久久久| 日韩视频在线一区二区三区| 欧美中文字幕在线| 岳乳丰满一区二区三区| 国产传媒一区在线| 免费在线成人av| 日本在线观看www| 亚洲一级在线观看| 亚洲综合在线网站| 成人网av.com/| 亚洲国产欧美一区二区丝袜黑人 | www.国产在线视频| 欧美gay囗交囗交| 这里只有精品免费| 三级男人添奶爽爽爽视频| 日本不卡电影| 欧美成人国产va精品日本一级| 日本三级片在线观看| 日本中文字幕一区二区视频| 亚洲一区二区日本| 人成在线免费视频| 亚洲青青青在线视频| 91猫先生在线| 国产成人久久精品一区二区三区| 日韩av影片在线观看| 男人的午夜天堂| 国产欧美一区二区色老头 | 国产色一区二区三区| 国产成人精品一区二区三区在线 | 欧美黑人一区二区三区| 成人a v视频| 国产激情一区二区三区四区| 免费一区二区三区| 丁香花在线影院| 欧美巨大另类极品videosbest | 97se亚洲综合| 国产精品一区二区婷婷| 亚洲高清久久久| 日韩成人av免费| 欧美女王vk| 久久久久久国产精品美女| 亚洲天堂自拍偷拍| 久久久九九九九| 国内精品视频一区二区三区| 国产精一区二区| 一夜七次郎国产精品亚洲| 日本污视频在线观看| 国产一区二区电影| 在线国产99| 欧美日韩激情电影| 国产视频精品xxxx| 日本一级淫片免费放| 91久久国产精品| 青青草原成人网| 91麻豆精品国产综合久久久| 亚洲欧美变态国产另类| 国产网址在线观看| 国产精品一二二区| 精品一区二区成人免费视频| 亚洲天堂1区| 亚洲男人的天堂在线播放| 国产在线观看成人| 成人性视频网站| 亚洲av首页在线| 91久久青草| 久久在线免费观看视频| 91肉色超薄丝袜脚交一区二区| 国产欧美日本一区二区三区| 国产精品亚洲αv天堂无码| 欧美日韩另类图片| 性欧美亚洲xxxx乳在线观看| 欧美 日韩 综合| 亚洲国产一区二区视频| 国产69视频在线观看| 亚洲欧洲日本mm| 久久久久久99| 免费看av不卡| 亚洲一级片在线看| 一区二区三区在线免费观看视频 | 亚洲高清无码久久| 亚洲国产日韩欧美一区二区三区| 国产伦精品一区二区三区免| 136福利第一导航国产在线| 精品精品欲导航| 日本少妇毛茸茸高潮| 99久久综合色| 99999精品视频| 蜜臀av免费一区二区三区| 秋霞成人午夜鲁丝一区二区三区| 久久久久久青草| 欧美日韩一区二区三区四区| 国产3级在线观看| 国产电影一区在线| 国产精品免费入口| 青草国产精品| 亚洲影影院av| 国产精品电影| 中日韩美女免费视频网址在线观看 | 福利视频网站一区二区三区| 男人插女人视频在线观看| 亚洲免费福利一区| 国产精品视频网站| 欧美videossex另类| 亚洲精品在线不卡| 国产精品福利电影| 亚洲18女电影在线观看| 69视频在线观看免费| 韩国一区二区三区| 麻豆tv在线播放| 久久久综合色| 国产在线一区二区三区四区 | 成人性生交大片免费看视频直播| 精品精品导航| 国产亚洲精品久久久久动| 99精品在线视频观看| 大桥未久av一区二区三区| 麻豆视频免费在线播放| 国产成人精品免费看| 国产性生交xxxxx免费| 欧美精品一线| 无遮挡亚洲一区| 成人日韩视频| 国产精品v日韩精品| 欧美理论电影| www.久久撸.com| 日韩大胆视频| 日韩精品影音先锋| wwwwww在线观看| 亚洲成人av一区二区| 国产精品视频看看| 久久久一区二区| 91九色蝌蚪porny| 国产一区二区三区蝌蚪| 久草综合在线观看| 日韩视频在线一区二区三区| 欧美少妇一区二区三区| 欧美亚洲精品在线| 蜜桃传媒视频麻豆一区| 9l亚洲国产成人精品一区二三| 国产精品美女免费| 中文不卡1区2区3区| 欧美国产日本在线| 成人av福利| 日日骚久久av| 加勒比一区二区三区在线| 亚洲国产精品小视频| 亚洲成人中文字幕在线| 制服丝袜一区二区三区| 中文字幕码精品视频网站| 色噜噜狠狠一区二区三区果冻| 久久精品免费在线| 亚洲激情网站免费观看| 人人澡人人澡人人看| 国产精品视频麻豆| 欧美成人国产精品一区二区| 91丨porny丨首页| 亚洲精品国产成人av在线| 国产成人欧美日韩在线电影| 想看黄色一级片| 久久99久久精品| www.这里只有精品| 蜜臀精品一区二区三区在线观看| 欧美精品无码一区二区三区| 狂野欧美一区| 又色又爽又高潮免费视频国产| 国产免费成人| 亚洲熟妇av日韩熟妇在线| 日韩五码在线| 黄色一级片播放| 免费国产自线拍一欧美视频| 女性女同性aⅴ免费观女性恋| 日韩一级网站| 久久国产成人精品国产成人亚洲 | 欧美精品激情视频| 久久香蕉av| 午夜精品免费视频| 是的av在线| 国产99久久久欧美黑人| 搜成人激情视频| 国产精品欧美激情在线播放| 久久国产三级| 亚洲一区二区三区乱码aⅴ蜜桃女| 国产精品久久久久久久久久辛辛 | 久久人人97超碰com| 精品人妻少妇嫩草av无码| 久久久久久久久岛国免费| 亚洲午夜精品久久久久久高潮| 中文字幕免费不卡| 人人澡人人澡人人看| 亚洲国产你懂的| 黄色在线观看国产| 欧美日韩中文另类| 精品久久久久成人码免费动漫| 欧美tickling挠脚心丨vk| 香蕉av在线播放| 一夜七次郎国产精品亚洲| 99热国产在线中文| 2019中文字幕在线| 精品自拍视频| 高清国产在线一区| 夜夜春成人影院| 国产日本欧美在线| 日韩一级欧洲| 五月天中文字幕在线| proumb性欧美在线观看| 老熟妇一区二区| 亚洲欧美激情一区二区| 国产精品人人人人| 欧美久久久久久久久久| 神宫寺奈绪一区二区三区| 一区二区欧美亚洲| 七七成人影院| 国产精品第一视频| 91精品啪在线观看国产爱臀| 日本在线高清视频一区| 国内精品亚洲| 国产又猛又黄的视频| 成人一级片网址| 国产人与禽zoz0性伦| 欧美日韩中文字幕| jizz中国女人| 亚洲最新av在线| xxxx视频在线| 国产日韩精品在线| 精品在线99| 国产精品国产三级国产专区51| 天堂蜜桃91精品| 无码人妻精品一区二区三| 国产精品成人午夜| 中文字幕精品无码一区二区| 精品久久久久av影院| 69av亚洲| 日本aⅴ大伊香蕉精品视频| 日韩精品亚洲专区在线观看| 色狠狠久久av五月综合|| 亚洲日韩成人| 亚洲av无一区二区三区久久| 中文字幕av一区二区三区免费看| 久久久久久久久久影院| 日韩女同互慰一区二区| 免费观看久久久久| 国产精品爱啪在线线免费观看| 久久365资源| 国产精品日韩三级| 黑人巨大精品欧美一区| 日韩一级av毛片| 黑人巨大精品欧美一区二区一视频 | 91高清免费视频| 91精品国产自产精品男人的天堂| 国产又黄又爽免费视频| 麻豆精品久久精品色综合| 好吊视频在线观看| 欧美性猛交xxxx乱大交| 天天综合天天综合| 久久久中文字幕| 成人在线tv视频| 久草视频这里只有精品| 国产成人自拍网| 老妇女50岁三级| 日韩一区二区在线观看视频播放| 免费观看在线黄色网| 成人a视频在线观看| 99久久99久久精品国产片果冰| 国产区二区三区| 欧美国产激情一区二区三区蜜月| 无码人妻丰满熟妇精品区| 亚洲另类欧美自拍| 偷拍精品精品一区二区三区| 免费在线观看一区二区| 老司机午夜精品视频| 少妇无套高潮一二三区| 在线免费观看视频一区| 成a人片在线观看www视频| 国产精品男人的天堂| 欧美wwwww| 91aaa精品| 一区二区在线观看不卡| 亚洲av无码乱码国产精品久久| 欧美激情xxxx性bbbb| 精品国产18久久久久久洗澡| 欧美老熟妇喷水| 久久久天堂av| 亚洲熟女乱色一区二区三区久久久| 中文字幕亚洲综合久久| 国产精品99久久免费| www婷婷av久久久影片| 成人少妇影院yyyy| 日韩视频在线观看一区| 在线观看不卡av| 精品国产伦一区二区三区观看说明 | 国产精品美女www爽爽爽| 91精品国产乱码久久| 欧美日韩福利电影| 日韩成人一级| 国产精品区在线| 亚洲午夜私人影院| 精品视频二区| 91夜夜揉人人捏人人添红杏| 亚洲二区精品| 亚洲av成人无码久久精品| 制服丝袜日韩国产| 蜜桃麻豆av在线| 亚洲欧美日韩在线综合| 丰满岳乱妇一区二区三区| 天干夜夜爽爽日日日日| 欧美成人精品在线播放| 亚州综合一区| 久国产精品视频| 午夜av区久久| 黄网页免费在线观看| 精品在线视频一区二区| 久久99精品久久久| 在线天堂中文字幕| 欧美成人精品在线播放| 国产成人高清|