轉-C#讓枚舉返回字符串

下面的手段是使用給枚舉項打標籤的方式,來返回字符串this

下面分別定義一個屬性類,和一個枚舉幫助類spa

 

[csharp]  view plain copy print ? 在CODE上查看代碼片 派生到個人代碼片
 
  1. [AttributeUsage(AttributeTargets.Field,AllowMultiple = false)]  
  2. public sealed class EnumDescriptionAttribute : Attribute  
  3. {  
  4.     private string description;  
  5.     public string Description { get { return description; } }  
  6.   
  7.     public EnumDescriptionAttribute(string description)  
  8.         : base()  
  9.     {  
  10.         this.description = description;  
  11.     }  
  12. }  
[csharp]  view plain copy print ? 在CODE上查看代碼片 派生到個人代碼片
 
  1. public static class EnumHelper  
  2. {  
  3.     public static string GetDescription(Enum value)  
  4.     {  
  5.         if (value == null)  
  6.         {  
  7.             throw new ArgumentException("value");  
  8.         }  
  9.         string description = value.ToString();  
  10.         var fieldInfo = value.GetType().GetField(description);  
  11.         var attributes =  
  12.             (EnumDescriptionAttribute[]) fieldInfo.GetCustomAttributes(typeof (EnumDescriptionAttribute), false);  
  13.         if (attributes != null && attributes.Length > 0)  
  14.         {  
  15.             description = attributes[0].Description;  
  16.         }  
  17.         return description;  
  18.     }  
  19. }  

使用舉例:.net

 

 

[csharp]  view plain copy print ? 在CODE上查看代碼片 派生到個人代碼片
 
  1. enum Week  
  2. {  
  3.     [EnumDescription("星期一")]  
  4.     Monday,  
  5.     [EnumDescription("星期二")]  
  6.     Tuesday  
  7. }  
  8.   
  9. //下面打印結果爲: 星期一  
  10. Console.WriteLine(EnuHelper.GetDescription(Week.Monday))  
相關文章
相關標籤/搜索