国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C# > 正文

c#枚舉值增加特性說明(推薦)

2020-01-24 00:40:16
字體:
來源:轉載
供稿:網友

通過特性給一個枚舉類型每個值增加一個字符串說明,用于打印或顯示。

自定義打印特性

[AttributeUsage(AttributeTargets.Field)]public class EnumDisplayAttribute : Attribute{ public EnumDisplayAttribute(string displayStr) {  Display = displayStr; } public string Display {  get;  private set; }}

打印特性定義很簡單,只含有一個字符串屬性。

定義一個枚舉

public enum TestEnum{ [EnumDisplay("一")] one, [EnumDisplay("二")] two, three}

枚舉類型one,two均增加了一個打印特性。

增加枚舉擴展方法取得打印特性值

public static class TestEnumExtentions{ public static string Display(this TestEnum t) {  var fieldName = Enum.GetName(typeof(TestEnum), t);  var attributes = typeof(TestEnum).GetField(fieldName).GetCustomAttributes(false);  var enumDisplayAttribute = attributes.FirstOrDefault(p => p.GetType().Equals(typeof(EnumDisplayAttribute))) as EnumDisplayAttribute;  return enumDisplayAttribute == null ? fieldName : enumDisplayAttribute.Display; }}

獲取枚舉值對應的枚舉filed字符串 var fieldName = Enum.GetName(typeof(TestEnum), t);

獲取filed對應的所有自定義特性集合 var attributes = typeof(TestEnum).GetField(fieldName).GetCustomAttributes(false);

獲取EnumDisplayAttribute特性 var enumDisplayAttribute = attributes.FirstOrDefault(p => p.GetType().Equals(typeof(EnumDisplayAttribute))) as EnumDisplayAttribute;

如存在EnumDisplayAttribute特性返回其Display值,否則返回filed字符串 return enumDisplayAttribute == null ? fieldName : enumDisplayAttribute.Display;

使用示例

class Program{ static void Main(string[] args) {  TestEnum e = TestEnum.one;  Console.WriteLine(e.Display());  TestEnum e1 = TestEnum.three;  Console.WriteLine(e1.Display());  Console.ReadKey(); }}

輸出:

一 three擴展說明

此方法不僅可以給枚舉類型增加說明特性,亦可給自定義類型的屬性,方法增加自定義特性。。

在使用反射使GetField(string name) GetMethod(string name) GetProperty(string name)等均需要字符串

在獲取自定義類型屬性或方法名稱字符串時可以使用 nameof

public class T{ public void Get() { } public int Num { get; set; }}T tt = new T();Console.WriteLine(nameof(tt.Num));Console.WriteLine(nameof(tt.Get));

以上所述是小編給大家介紹的c#枚舉值增加特性說明(推薦),希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對武林網網站的支持!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 尖扎县| 凤冈县| 博白县| 望江县| 循化| 红安县| 贺州市| 岚皋县| 顺昌县| 温泉县| 同江市| 固始县| 祁东县| 潼南县| 班玛县| 长垣县| 鹤峰县| 九江县| 五寨县| 华宁县| 宁陕县| 扬州市| 桃园市| 本溪市| 壤塘县| 阿尔山市| 平安县| 东宁县| 孙吴县| 嘉鱼县| 日照市| 天全县| 武隆县| 慈溪市| 东宁县| 托里县| 新乡县| 花莲县| 荥阳市| 盈江县| 晴隆县|