程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#基礎知識 >> C#控制台程序的參數解析類庫 CommandLine簡單使用說明

C#控制台程序的參數解析類庫 CommandLine簡單使用說明

編輯:C#基礎知識

前言

C#開發的控制台程序,默認接收string[] args參數。如果有多個參數需要輸入時,可以按照順序依次輸入;但如果有些參數不是必選的,或者有些參數中間需要有空格比如時間“2016-05-18 24:35:00”,處理起來就比較麻煩了。一些常用的命令行工具都會提供指定參數的方式,比如:curl

C:\Users\Administrator>curl --help
Usage: curl [options...] <url>
Options: (H) means HTTP/HTTPS only, (F) means FTP only
--anyauth Pick "any" authentication method (H)
-a/--append Append to target file when uploading (F)
--basic Use HTTP Basic Authentication (H)
--cacert <file> CA certificate to verify peer against (SSL)
--capath <directory> CA directory to verify peer against (SSL)
-E/--cert <cert[:passwd]> Client certificate file and password (SSL)

這裡要介紹的 CommandLine 就是幫助我們輕易完成參數接收和幫助輸出的開源類庫,同時它可以把接收到的參數轉換成對象,方便程序的處理。

教程

  1. 新建控制台項目,安裝CommandLine。

    可以下載、編譯、引用CommandLine.dll,也可以使用nuget安裝 Install-Package CommandLineParser

  2. 新建參數說明類 Options 

首先,添加命名空間  

using CommandLine;
using CommandLine.Text;

然後,定義Options 類

   class Options
     {
         [Option('r', "read", MetaValue = "FILE", Required = true, HelpText = "輸入數據文件")]
         public string InputFile { get; set; }
 
         [Option('w', "write", MetaValue = "FILE", Required = false, HelpText = "輸出數據文件")]
         public string OutputFile { get; set; }
 
 
         [Option('s', "start-time", MetaValue = "STARTTIME", Required = true, HelpText = "開始時間")]
         public DateTime StartTime { get; set; }
 
         [Option('e', "end-time", MetaValue = "ENDTIME", Required = true, HelpText = "結束時間")]
         public DateTime EndTime { get; set; }
 
 
         [HelpOption]
         public string GetUsage()
         {
             return HelpText.AutoBuild(this, current => HelpText.DefaultParsingErrorsHandler(this, current));
         }
 
     }

  3. 修改控制台主程序 Program的Main函數  

   //輸出信息時的頭信息
         private static readonly HeadingInfo HeadingInfo = new HeadingInfo("演示程序", "V1.8");
 
         static void Main(string[] args)
         {
             //這種輸出會在前面添加"演示程序"幾個字
             HeadingInfo.WriteError("包含頭信息的錯誤數據");
             HeadingInfo.WriteMessage("包含頭信息的消息數據");
  
             Console.WriteLine("不包含頭信息的錯誤數據");
             Console.WriteLine("不包含頭信息的消息數據");
 
             var options = new Options();
             if (CommandLine.Parser.Default.ParseArguments(args, options))
             {
                 Console.WriteLine("Input File:" + options.InputFile);
                 Console.WriteLine("Output File:" + options.OutputFile);
 
                 Console.WriteLine("開始

3. 測試控制台程序

不輸入任何參數,輸出了參數的說明信息,如下圖:

輸入參數,如下圖:

時間和字符串類型的字段都獲取到了值。 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved