EnumRemarkAttribute,获取属性值

首先自定义一个RemarkAttribute

[html] view plain copy

  1. using System; 
  2. using System.Collections.Generic; 
  3. using System.Linq; 
  4. using System.Reflection; 
  5. using System.Text; 
  6. using System.Threading.Tasks; 
  7. namespace Zemp.Process.Util.EnumAttribute 
  8.     public class RemarkAttribute : Attribute 
  9.     { 
  10.         private string _remark; 
  11.         public RemarkAttribute(string _remark) 
  12.         { 
  13. this._remark = _remark; 
  14.         } 
  15.         public string Remark 
  16.         { 
  17.             get { return _remark; } 
  18.             set { _remark = value; } 
  19.         } 
  20.         public static string GetEnumRemark(System.Enum _enum) 
  21.         { 
  22.             Type type = _enum.GetType(); 
  23.             FieldInfo fd = type.GetField(_enum.ToString()); 
  24.             if (fd == null) return string.Empty; 
  25.             object[] attrs = fd.GetCustomAttributes(typeof(RemarkAttribute), false); 
  26.             string name = string.Empty; 
  27.             foreach (RemarkAttribute attr in attrs) 
  28.             { 
  29. name = attr.Remark; 
  30.             } 
  31.             return name; 
  32.         } 
  33.     } 

然后在Enum里面的使用

[html] view plain copy

  1. using System; 
  2. using System.Collections.Generic; 
  3. using System.Linq; 
  4. using System.Text; 
  5. using System.Threading.Tasks; 
  6. using Zemp.Process.Util.EnumAttribute; 
  7. namespace Zemt.Process.WebServiceAPI.Enum 
  8.     public enum WorkflowTypeEnum 
  9.     { 
  10.          /// <summary>
  11.         /// 草稿 
  12.         /// </summary>
  13.         [Remark("草稿")] 
  14. Draft = -1, 
  15.         /// <summary>
  16.         /// 流转结束 
  17.         /// </summary>
  18.         [Remark("流转结束")] 
  19. Completed = 0, 
  20.         /// <summary>
  21.         /// 用户取消 
  22.         /// </summary>
  23.         [Remark("用户取消")] 
  24. UserCancel = 1, 
  25.         /// <summary>
  26.         /// 管理员取消 
  27.         /// </summary>
  28.         [Remark("管理员取消")] 
  29. AdminCancel = 2, 
  30.         /// <summary>
  31.         /// 流转中  
  32.         /// </summary>
  33.         [Remark("流转中")] 
  34. Running = 3, 
  35.         /// <summary>
  36.         /// 流转中(曾被拒绝过) 
  37.         /// </summary>
  38.         [Remark("流转中(曾被拒绝过)")] 
  39. EverDeclined = 4, 
  40.         /// <summary>
  41.         /// 未流转 
  42.         /// </summary>
  43.         [Remark("未流转")] 
  44. None = 5
  45.     } 

使用:得到Remark里面的值

RemarkAttribute.GetEnumRemark(WorkflowTypeEnum.None);

int 转 enum

(WorkflowTypeEnum)5

enum转int

convert.into32(WorkflowTypeEnum.None)

http://blog.csdn.net/qq873113580/article/details/48464481

原文地址:https://www.cnblogs.com/suizhikuo/p/5417517.html