ASP.NET - 列舉(enum)取得Description

想取得 列舉(enum)的描述文字

公司的自定義方法中,如果需要帶入「string」類型的參數時, 寫法是 func(“參數”);

但帶入的參數假如是固定的文字 ( “糖糖”、”嘻哈俠”、”台灣女孩” 這三種 ), 是不是我們就不要用打得帶進去 (像我就會打字錯誤)。
後來想說寫一個類似 列舉(enum) 或者是 字典 (Dictionary) 去取代用打的字串

列舉 enum

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
public enum Person : int
{
[Description("糖糖")]
CandyCandy = 0,
[Description("嘻哈俠")]
HipHopMan = 1,
[Description("台灣女孩")]
TaiwanGirl = 2
}

public string GetDescription(Enum value)
{
FieldInfo fi = value.GetType().GetField(value.ToString());
DescriptionAttribute[] attributes
= (DescriptionAttribute[])fi.GetCustomAttributes(typeof(DescriptionAttribute), false);
return attributes.Length > 0 ? attributes[0].Description : value.ToString();
}

//經由「列舉值」取得Description之值
string myPerson = GetDescription(Person.CandyCandy); //糖糖

//經由「字串值」取得Description之值
string myPerson2 = GetDescription(((Person) Enum.Parse(typeof(Person), "HipHopMan"))); //嘻哈俠

//經由「列舉型別的基底型別數值」取得Description之值
string myPerson3 = GetDescription((Person) Enum.ToObject(typeof(Person), 2)) //台灣女孩

Dictionary

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public enum Person
{
CandyCandy,
HipHopMan,
TaiwanGirl
}

public Dictionary<Person, string> myDict = new Dictionary<Person, string>()
{
{ Person.CandyCandy, "糖糖" },
{ Person.HipHopMan, "嘻哈俠" },
{ Person.TaiwanGirl, "台灣女孩" }
};

string myPerson = myDict[Person.CandyCandy].ToString()); //糖糖

呵呵…

聽前輩說還有一些相關的 (但我分不清楚使用時機)
HashMap
Tuple
或許跟上述說的沒有什麼關係,但對我來說都是比較少用到的,糖糖先記住之後再來讀讀文件

0%