欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

關(guān)于c#中枚舉類型支持顯示中文的擴(kuò)展說明

 更新時(shí)間:2013年03月01日 11:05:44   作者:  
需求?。骸∶杜e類型在界面顯示的時(shí)候可以顯示相應(yīng)的中文信息, 這樣界面對(duì)用戶友好 . 場(chǎng)景?。骸≡谝恍I(yè)務(wù)中涉及到審核功能的時(shí)候, 往往有這幾個(gè)狀態(tài) :未送審 , 審核中 ,審核通過, 駁回 . 這個(gè)時(shí)候我們會(huì)定義一個(gè)枚舉類型來描述?。?/div>

復(fù)制代碼 代碼如下:

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頁面往往需要顯示中文枚舉信息?。骸   ?/P>

 


序號(hào)
項(xiàng)目
 狀態(tài)
 審核人

請(qǐng)假單
 審核通過
 張三


解決方法?。骸〗o枚舉項(xiàng)增加DescriptionAttribute后利用反射來獲取中文信息.

步驟?。?/P>

1?。≡诙x枚舉AuditEnum的類中添加名稱空間System.ComponentModel , 給每個(gè)枚舉項(xiàng)加DescriptionAttribute , 示例代碼如下?。?/P>

復(fù)制代碼 代碼如下:

using System.ComponentModel;

public enum AuditEnum
{
    [Description("未送審")]
    Holding=0,  

  [Description("審核中")]
    Auditing=1,

    [Description("審核通過")]
    Pass=2,

    [Description("駁回")]
    Reject=3     
}


2 . 自定義一個(gè)類EnumService.cs , 增加靜態(tài)方法GetDescription()根據(jù)傳入的枚舉值來讀取Description信息 , 示例代碼如下?。?/P>

復(fù)制代碼 代碼如下:

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>

復(fù)制代碼 代碼如下:

asp.net頁面代碼:
<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頁面后臺(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 , 有任何問題請(qǐng)?jiān)谙路搅粞浴?, 喜歡就點(diǎn)推薦.

相關(guān)文章

最新評(píng)論