麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發設計 > 正文

寫個C#命令行參數解析的小工具

2019-11-14 13:36:33
字體:
來源:轉載
供稿:網友

最近測試工作做的比較多因此時常要創建一些控制臺類型的應用程序。因為程序有不同的參數開關,需要在程序啟動的時候通過命令行來給程序傳遞各種開關和參數。直接操作args有些不方便,所以就寫了個解析參數的小工具來處理各種參數。

參數實體:

 1 public class CommandLineArgument 2 { 3     List<CommandLineArgument> _arguments; 4  5     int _index; 6  7     string _argumentText; 8  9     public CommandLineArgument Next10     {11         get {12             if (_index < _arguments.Count - 1) {13                 return _arguments[_index + 1];14             }15 16             return null;17         }18     }19     public CommandLineArgument PRevious20     {21         get {22             if (_index > 0)23             {24                 return _arguments[_index - 1];25             }26 27             return null;28         }29     }30     internal CommandLineArgument(List<CommandLineArgument> args, int index, string argument)31     {32         _arguments = args;33         _index = index;34         _argumentText = argument;35     }36 37     public CommandLineArgument Take() {38         return Next;39     }40 41     public IEnumerable<CommandLineArgument> Take(int count)42     {43         var list = new List<CommandLineArgument>();44         var parent = this;45         for (int i = 0; i < count; i++)46         {47             var next = parent.Next;48             if (next == null)49                 break;50 51             list.Add(next);52 53             parent = next;54         }55 56         return list;57     }58 59     public static implicit Operator string(CommandLineArgument argument)60     {61         return argument._argumentText;62     }63 64     public override string ToString()65     {66         return _argumentText;67     }68 }

 

參數解析器:

 1 public class CommandLineArgumentParser 2 { 3  4     List<CommandLineArgument> _arguments; 5     public static CommandLineArgumentParser Parse(string[] args) { 6         return new CommandLineArgumentParser(args); 7     } 8  9     public CommandLineArgumentParser(string[] args)10     {11         _arguments = new List<CommandLineArgument>();12 13         for (int i = 0; i < args.Length; i++)14         {15             _arguments.Add(new CommandLineArgument(_arguments,i,args[i]));16         }17 18     }19 20     public CommandLineArgument Get(string argumentName)21     {22         return _arguments.FirstOrDefault(p => p == argumentName);23     }24 25     public bool Has(string argumentName) {26         return _arguments.Count(p=>p==argumentName)>0;27     }28 }

 

在項目中引入這兩個類就可以在Main函數里對args做相應的解析和操作了。

 

例如有控制臺應用Example,在命令行中輸入:

Example.exe -u MrJson -p admin123

 

在Example的Main函數里處理args:

 1 static void Main(string[] args) 2 { 3     var arguments = CommandLineArgumentParser.Parse(args); 4  5     if (arguments.Has("-u")) 6     { 7         Console.WriteLine("用戶名:{0}", arguments.Get("-u").Next); 8     } 9 10     if (arguments.Has("-p"))11     {12         Console.WriteLine("密碼:{0}", arguments.Get("-p").Next);13     }14 }

 

如果參數后面要傳多個值,例如下面這個例子,-chpwd參數需要兩個參數:

Example.exe -chpwd admin888 admin999

 

那么,就可以這樣處理:

 1 if(arguments.Has("-chpwd")) 2 { 3     var arg = arguments.Get("-chpwd"); 4     var oldPwd = arg.Take(); 5     var newPwd = arg.Take().Take(); 6     // 或者 7     var pwds = arg.Take(2); 8     oldPwd = pwds.First(); 9     newPwd = pwds.Last();10 11     Console.WriteLine("原密碼:{0} 新密碼:{1}", oldPwd, newPwd);  12 }

 

That's all.

 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 极品国产91在线网站 | 成人在线视频一区 | 一级黄色大片在线观看 | 久久久久久久久浪潮精品 | 国产午夜精品在线 | 亚洲小视频在线 | 国产精品视频yy9299一区 | 欧美精品色精品一区二区三区 | 黄色大片免费网站 | 久久免费视频精品 | 少妇一级淫片免费放播放 | v11av在线视频成人 | 大学生a级毛片免费视频 | 免费观看视频91 | 久久精品亚洲欧美日韩精品中文字幕 | 久久国产夫妻视频 | 日韩中文字幕三区 | av色哟哟| 免费一区二区三区 | 亚洲一区 国产 | 久久九九热re6这里有精品 | 日日鲁夜夜视频热线播放 | 中文字幕综合 | 羞羞色院91精品网站 | 二级大黄大片高清在线视频 | 色羞羞 | 午夜色片 | 一级免费在线视频 | 少妇的肉体的满足毛片 | 原来神马影院手机版免费 | 成人福利视频网站 | 欧美成人一级 | 九九热九九爱 | 成人小视频免费在线观看 | 热re91久久精品国产99热 | 国产乱淫av| 草莓福利视频在线观看 | 久久九九热re6这里有精品 | 欧美精品一区二区久久 | 黄色一级片免费观看 | 久久精品欧美一区二区三区不卡 |