Command Line Helper

Sample

public string GetUser()
{
    var args = System.Environment.GetCommandLineArgs().ToArgDictionary();
    var user = args.GetValueOrDefault("Username", System.Environment.UserName);
    return user.ToLower();
}

Extension Method

public static class CommandLineExtensions
{
    /// <summary>
    /// Returns the value associated with the specified key, or the default value if the key is null or not matched.
    /// </summary>
    public static string GetValueOrDefault(this Dictionary<string, string> args, string key, string defaultValue)
    {
        if (string.IsNullOrEmpty(key)) return defaultValue;
        key = key.ToLower();
        return args.ContainsKey(key) ? args[key] : defaultValue;
    }

    /// <summary>
    /// Creates a Dictionary&lt;<see cref="string"/>, <see cref="T:string[]"/>&gt; from command line arguments.
    /// </summary>
    public static Dictionary<string, string> ToArgDictionary(this string[] args)
    {
        var resultDict = new Dictionary<string, string>();

        for (var i = 0; i < args.Length; i++)
        {
            var arg = args[i];

            if (arg.Length <= 1) continue;
            if (arg[0] != '-') continue;

            arg = arg.ToLower();
            var parameter = arg.Substring(1);

            //Resolve parameter value
            var value = string.Empty;
            if (parameter.Contains('='))
            {
                var newParameter = parameter.Substring(0, parameter.IndexOf('='));
                value = parameter.Substring(parameter.IndexOf('=') + 1, parameter.Length - (parameter.IndexOf('=') + 1));
                parameter = newParameter;
            }
            else if (i < args.Length - 1 && args[i + 1][0] != '-')
            {
                value = args[++i];
            }

            //Set parameter/value to dict
            if (!resultDict.ContainsKey(parameter))
            {
                resultDict.Add(parameter, value);
            }
            else
            {
                resultDict[parameter] = value;
            }
        }
        return resultDict;
    }
}
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市暖庄,隨后出現的幾起案子蔗草,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,576評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件荐开,死亡現場離奇詭異凌蔬,居然都是意外死亡,警方通過查閱死者的電腦和手機寡具,發(fā)現死者居然都...
    沈念sama閱讀 94,515評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來稚补,“玉大人童叠,你說我怎么就攤上這事】文唬” “怎么了厦坛?”我有些...
    開封第一講書人閱讀 168,017評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長撰豺。 經常有香客問我粪般,道長,這世上最難降的妖魔是什么污桦? 我笑而不...
    開封第一講書人閱讀 59,626評論 1 296
  • 正文 為了忘掉前任亩歹,我火速辦了婚禮,結果婚禮上凡橱,老公的妹妹穿的比我還像新娘小作。我一直安慰自己,他們只是感情好稼钩,可當我...
    茶點故事閱讀 68,625評論 6 397
  • 文/花漫 我一把揭開白布顾稀。 她就那樣靜靜地躺著,像睡著了一般坝撑。 火紅的嫁衣襯著肌膚如雪静秆。 梳的紋絲不亂的頭發(fā)上粮揉,一...
    開封第一講書人閱讀 52,255評論 1 308
  • 那天,我揣著相機與錄音抚笔,去河邊找鬼扶认。 笑死,一個胖子當著我的面吹牛殊橙,可吹牛的內容都是我干的辐宾。 我是一名探鬼主播,決...
    沈念sama閱讀 40,825評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼膨蛮,長吁一口氣:“原來是場噩夢啊……” “哼叠纹!你這毒婦竟也來了?” 一聲冷哼從身側響起敞葛,我...
    開封第一講書人閱讀 39,729評論 0 276
  • 序言:老撾萬榮一對情侶失蹤誉察,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后制肮,有當地人在樹林里發(fā)現了一具尸體冒窍,經...
    沈念sama閱讀 46,271評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,363評論 3 340
  • 正文 我和宋清朗相戀三年豺鼻,在試婚紗的時候發(fā)現自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片款慨。...
    茶點故事閱讀 40,498評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡儒飒,死狀恐怖,靈堂內的尸體忽然破棺而出檩奠,到底是詐尸還是另有隱情桩了,我是刑警寧澤,帶...
    沈念sama閱讀 36,183評論 5 350
  • 正文 年R本政府宣布埠戳,位于F島的核電站井誉,受9級特大地震影響,放射性物質發(fā)生泄漏整胃。R本人自食惡果不足惜颗圣,卻給世界環(huán)境...
    茶點故事閱讀 41,867評論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望屁使。 院中可真熱鬧在岂,春花似錦、人聲如沸蛮寂。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,338評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽酬蹋。三九已至及老,卻和暖如春抽莱,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背骄恶。 一陣腳步聲響...
    開封第一講書人閱讀 33,458評論 1 272
  • 我被黑心中介騙來泰國打工食铐, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人叠蝇。 一個月前我還...
    沈念sama閱讀 48,906評論 3 376
  • 正文 我出身青樓璃岳,卻偏偏與公主長得像,于是被迫代替她去往敵國和親悔捶。 傳聞我的和親對象是個殘疾皇子铃慷,可洞房花燭夜當晚...
    茶點故事閱讀 45,507評論 2 359