2010-05-22 135 views
3

我正在尋找一些關於枚舉和檢索關聯字符串值的最佳實踐建議。鑑於此:ASP.NET中的枚舉和字符串值

public enum Fruits { 
    Apple, 
    Orange, 
    Grapefruit, 
    Melon 
} 

什麼是獲得名稱的相關字符串值的最佳方式是什麼?例如。 「葡萄柚」,因爲字符串值可能與枚舉中的表示不匹配。例如「Casaba Melon」

我目前的想法是函數接受一個枚舉並返回一個字符串,但這不意味着硬編碼字符串值(我不喜歡這樣做)?是否正在使用資源文件,其中的字符串可以通過枚舉重新獲取?

+2

您可能要考慮將你的枚舉中的值改爲更加中立的東西,我保證它的工作就像一個例子。 – R0MANARMY 2010-05-22 22:50:07

+0

你的觀點已被採納。這就是你在週日早上9點提問的原因。 – Jason 2010-05-22 22:58:27

+0

就這樣,你的選票就不存在了,我甚至會給它一個+1。 – R0MANARMY 2010-05-23 03:20:02

回答

4

要回答你的問題,你可以修飾你的枚舉屬性,給他們正確的顯示字符串。下面是一些例子

這種方法的主要限制是,如果你需要國際化你的應用程序,我不知道的方法,使屬性字符串變化基於線程語言環境的值(或者用於區分語言環境的任何方式)。

1

R0MANARMY已經給出了一個非常好的解決方案。我會提供這個選擇,不太好,但仍然是。你可能很容易讓這種文化變得敏感。

假設你有一個枚舉

public enum NicePeople 
{ 
    SomeGuy, 
    SomeOtherGuy 
} 

然後,您可以提出延期方法這樣

public static class MyExtensions 
{ 
    public static string GetName(this NicePeople tst) 
    { 
     switch (tst) 
     { 
      case NicePeople.SomeGuy: 
       return "Some Nice guy"; 
      case NicePeople.SomeOtherGuy: 
       return "Another Nice Guy"; 
      default: 
       throw new Exception("Naw"); 
     } 
    } 
} 

,讓你的連環殺手的名字像這樣

NicePeople.SomeGuy.GetName() 
+0

我相信你的解決方案屬於**「我目前的想法是函數接受一個枚舉並返回一個字符串,但這不意味着硬編碼字符串值(我不願意這麼做)?」**問題的一部分。但是,謝謝你加入社區並貢獻自己的力量。 – R0MANARMY 2010-05-23 03:19:06