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

首頁 > 編程 > C# > 正文

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

2019-10-29 21:10:49
字體:
供稿:網(wǎng)友

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

自定義打印特性

[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均增加了一個打印特性。

增加枚舉擴(kuò)展方法取得打印特性值

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; }}

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

獲取filed對應(yīng)的所有自定義特性集合 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擴(kuò)展說明

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

在使用反射使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#枚舉值增加特性說明(推薦),希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對VEVB武林網(wǎng)網(wǎng)站的支持!


注:相關(guān)教程知識閱讀請移步到c#教程頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 望都县| 乐东| 和硕县| 霞浦县| 洪泽县| 广水市| 南漳县| 清水河县| 泰顺县| 东源县| 德安县| 固镇县| 杨浦区| 普安县| 兴城市| 武胜县| 洪洞县| 玛沁县| 绵阳市| 鄂托克旗| 墨江| 桃江县| 阿克| 房产| 阳江市| 南汇区| 云和县| 文安县| 南投市| 大方县| 山东省| 安乡县| 九龙城区| 永定县| 宾阳县| 石渠县| 棋牌| 南涧| 大理市| 响水县| 沽源县|