平平淡淡开开心心  
微信小程序全栈交流群 全球旅游旅行交流群

下面的手段是使用给枚举项打标签的方式,来返回字符串

下面分别定义一个属性类,和一个枚举帮助类

 

[csharp] view plaincopyprint?在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 plaincopyprint?在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. }  

使用举例:

 

 

[csharp] view plaincopyprint?在CODE上查看代码片派生到我的代码片
 
  1. enum Week  
  2. {  
  3.     [EnumDescription("星期一")]  
  4.     Monday,  
  5.     [EnumDescription("星期二")]  
  6.     Tuesday  
  7. }  
  8.   
  9. //下面打印结果为: 星期一  
  10. Console.WriteLine(EnuHelper.GetDescription(Week.Monday))  
posted on   程序媛鼓励师  阅读(5425)  评论(1编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
 
点击右上角即可分享
微信分享提示