關(guān)于c#中枚舉類型支持顯示中文的擴(kuò)展說(shuō)明
AuditEnum.cs :
public enum AuditEnum
{
Holding=0,
Auditing=1,
Pass=2,
Reject=3
}
以asp.net為例 , 程序中某個(gè)方法可能會(huì)這樣使用枚舉值 :
public void HandleAudit(int userID, AuditEnum ae)
{
if (ae==AuditEnum.Pass)
{
//do something
}
else if (ae==AuditEnum.Reject)
{
//do other something
}
}
asp.net頁(yè)面往往需要顯示中文枚舉信息?。骸 ?/P>
序號(hào)
項(xiàng)目
狀態(tài)
審核人
請(qǐng)假單
審核通過(guò)
張三
解決方法?。骸〗o枚舉項(xiàng)增加DescriptionAttribute后利用反射來(lái)獲取中文信息.
步驟?。?/P>
1?。≡诙x枚舉AuditEnum的類中添加名稱空間System.ComponentModel , 給每個(gè)枚舉項(xiàng)加DescriptionAttribute , 示例代碼如下?。?/P>
using System.ComponentModel;
public enum AuditEnum
{
[Description("未送審")]
Holding=0,
[Description("審核中")]
Auditing=1,
[Description("審核通過(guò)")]
Pass=2,
[Description("駁回")]
Reject=3
}
2 . 自定義一個(gè)類EnumService.cs , 增加靜態(tài)方法GetDescription()根據(jù)傳入的枚舉值來(lái)讀取Description信息 , 示例代碼如下?。?/P>
public class EnumService
{
public static string GetDescription(Enum obj)
{
string objName = obj.ToString();
Type t = obj.GetType();
FieldInfo fi = t.GetField(objName);
DescriptionAttribute[] arrDesc = (DescriptionAttribute[])fi.GetCustomAttributes(typeof(DescriptionAttribute), false);
return arrDesc[0].Description;
}
}
3 . 在輸出枚舉值的地方增加對(duì)EnumService.GetDescription()的調(diào)用 , 示例代碼如下?。?/P>
asp.net頁(yè)面代碼:
<asp:Repeater ID="AuditRepeater" runat="server" OnItemDataBound="AuditRepeater_OnItemDataBound">
<ItemTemplate>
//something ui code is here ....
<asp:Literal ID="AuditText" runat="server"></asp:Literal>
//something ui code is here ....
</ItemTemplate>
</asp:Repeater>
asp.net頁(yè)面后臺(tái)代碼:
protected void AuditRepeater_OnItemDataBound(object sender, RepeaterItemEventArgs arg)
{
if (arg.Item.ItemType == ListItemType.Item)
{
Literal audit = arg.Item.FindControl("AuditText") as Literal;
AuditEnum ae = AuditEnum.Pass; //根據(jù)項(xiàng)目的實(shí)際情況賦值,這里為簡(jiǎn)化賦值A(chǔ)uditEnum.Pass
audit.Text = EnumService.GetDescription(we);
}
}
全文完 .
以上代碼運(yùn)行于VS2010 , 有任何問(wèn)題請(qǐng)?jiān)谙路搅粞浴?, 喜歡就點(diǎn)推薦.
相關(guān)文章
C#中List集合使用Max()方法查找到最大值的實(shí)例
這篇文章主要介紹了C#中List集合使用Max()方法查找到最大值的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-12-12
C#中Predicate<T>與Func<T, bool>泛型委托的用法實(shí)例
這篇文章主要介紹了C#中Predicate<T>與Func<T, bool>泛型委托的用法,指出了其用法中的誤區(qū)及易錯(cuò)點(diǎn),有助于更好的理解泛型委托的用法,需要的朋友可以參考下2014-09-09
C#實(shí)現(xiàn)的pdf生成圖片文字水印類實(shí)例
這篇文章主要介紹了C#實(shí)現(xiàn)的pdf生成圖片文字水印類,結(jié)合完整實(shí)例形式分析了C#針對(duì)pdf文件的創(chuàng)建、添加文字、水印等相關(guān)操作技巧,需要的朋友可以參考下2017-09-09
C#實(shí)現(xiàn)DevExpress本地化實(shí)例詳解
這篇文章主要介紹了C#實(shí)現(xiàn)DevExpress本地化,以實(shí)例形式較為詳細(xì)的分析了DevExpress本地化的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-08-08
C#中實(shí)現(xiàn)線程同步lock關(guān)鍵字的用法詳解
實(shí)現(xiàn)線程同步的第一種方式是我們經(jīng)常使用的lock關(guān)鍵字,它將包圍的語(yǔ)句塊標(biāo)記為臨界區(qū),這樣一次只有一個(gè)線程進(jìn)入臨界區(qū)并執(zhí)行代碼,接下來(lái)通過(guò)本文給大家介紹C#中實(shí)現(xiàn)線程同步lock關(guān)鍵字的用法詳解,一起看看吧2016-07-07
C# winfrom 模擬ftp文件管理實(shí)現(xiàn)代碼
從網(wǎng)上找到的非常好用的模擬ftp管理代碼,整理了一下,希望對(duì)需要的人有幫助2014-01-01

