從列舉值獲取對應的文字描述

2021-07-09 11:41:09 字數 1062 閱讀 4029

有時列舉值在顯示時,需要顯示列舉值對應的文字串。一種方案是在呼叫的地方使用switch或者if來判斷列舉值,然後賦給不同的文字串,但這樣一來,如果有較多的地方都用到的時候就會比較麻煩。當然有人說,這種情況下,可以針對這種列舉值封裝乙個方法,然後來呼叫。那如果有多個列舉型別都有這樣的需求呢?有沒有什麼比較通用的解決辦法?有的。

這裡需要用到description屬性,給每個列舉值都賦上乙個該屬性,然後在該屬性中賦上要描述的文字串。比如

#region yesnoenum

public enum yesnoenum

#endregion

注:desscription需要引用using system.componentmodel;
那要如何獲取這個description屬性的值呢?我們可以作用反射,**如下

public static class enumutil

#endregion

}

注:我們這裡寫的雖然是靜態方法,但是可以適用於所有的enum類。enumutil必須是靜態類,而方法也必須是靜態方法,同時第乙個引數必須是this的,這樣才能將方法擴充套件到enum類中,以適用到所有的列舉中。

下面是呼叫**

yesnoenum yesnoenum = yesnoenum.yes;

string description = yesnoenum.fetchdescription();

console.writeline(description);

呼叫的截圖如下

從圖中可以看到description得到了我們在列舉中指定的description的文字。同時yesnoenum的列舉例項增加了擴充套件方法fetchdescription.

獲取列舉文字值和描述資訊, 列舉轉字典

string name enum.getname value.gettype value 列舉文字值 aa c aa enum.parse typeof aa str 字串轉列舉 返回列舉項的描述資訊。要獲取描述資訊的列舉項。列舉想的描述資訊。public static string getdesc...

Enum 列舉值 (一) 獲取描述資訊

封裝了方法 public static class enumoperate public basedescriptionattribute string descriptioncn,string descriptionen base descriptioncn private string desc...

通用的方法獲取列舉內各值的描述

定義列舉時直接用中文 由於vs對中文支援的很不錯,所以很多程式設計師都採用了此方案 缺點 不適合多語言 感覺不太完美,畢竟大部分程式設計師大部分 都使用英文 2.利用自定義屬性定義列舉值的描述 大尾巴狼 首先多謝兩位給我的提示,發現在上個 版本現在解決方案如下 列舉定義 enumdescriptio...