c# 獲取枚舉類型的描述description及枚舉類型的值


枚舉類:

 1 using System;
 2 using System.Collections.Generic;
 3 using System.ComponentModel;
 4 using System.Linq;
 5 using System.Text;
 6 
 7 namespace DevOps.Commn
 8 {
 9    public static class Enums
10     {
11         /// <summary>
12         /// 文檔狀態
13         /// </summary>
14         public enum DocStatus
15         {
16             /// <summary>
17             /// 草稿
18             /// </summary>
19             [Description("草稿")]
20             Draft = 1,
21             /// <summary>
22             /// 已發布
23             /// </summary>
24             [Description("已發布")]
25             Published = 2,
26             /// <summary>
27             /// 撤回
28             /// </summary>
29            [Description("撤回")]
30             Withdraw = 3
31         }
32 
33         public static string GetEnumDesc<T>(T tField)
34         {
35             var description = string.Empty; //結果
36             var inputType = tField.GetType(); //輸入的類型
37             var descType = typeof(DescriptionAttribute); //目標查找的描述類型
38 
39             var fieldStr = tField.ToString();                //輸入的字段字符串
40             var field = inputType.GetField(fieldStr);        //目標字段
41 
42             var isDefined = field.IsDefined(descType, false);//判斷描述是否在字段的特性
43             if (isDefined)
44             {
45                 var EnumAttributes = (DescriptionAttribute[])field        //得到特性信息
46                     .GetCustomAttributes(descType, false);
47                 description = EnumAttributes.FirstOrDefault()?.Description ?? string.Empty;
48             }
49             return description;
50         }
51     }
52 }

調用方法:

1  var EnumDesc = GetEnumDesc(DocStatus.Published);//"已發布"
2  var EnumValue = (int)DocStatus.Draft;//1

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM