2011-04-29 104 views
0

我已經爲第三方應用程序提供了一個完整的命令行開關的枚舉類。我試圖讓它可以調用枚舉與.ToSwitch(或其他),以便我可以使其驗證值類型,吐出格式化的命令行開關與它的參數值。也許我錯了。在整天坐在這裏工作之後(這很大),我發現很難放手去探索另一種方法。大聲笑任何建議?如何爲單個特定枚舉創建擴展方法

期望的結果:

Console.WriteLine(EnumClass.EnumItem.ToSwitch("option")); 

會吐出:-x 「選項」

回答

2

對於一個特定的枚舉:

public enum MyEnum 
{ 
    value1 = 1, 
    value2 = 2, 
} 

public static class EnumExtensions 
{ 
    public static string ToSwitch(this MyEnum val, string option) 
    { 
     switch (val) 
     { 
      case MyEnum.value1 : return "x " + option; 
      case MyEnum.value2 : return "y " + option; 
      default: return "error"; 
     } 
    } 
} 

另一種方式做你談論的是什麼與Dictionary,這可能是優選的。鍵將是開關(或枚舉值),值將是命令格式。就像:

Dictionary<string, string> CmdFormats = new Dictionary<string, string>() 
{ 
    { "-a", "filename" }, 
    { "-n", "number" } 
}; 

我懷疑這會比定義一個枚舉更可維護。