欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時間:2017年05月12日 10:28:30   作者:冰不化  
這篇文章主要介紹了c#枚舉值增加特性說明(推薦),需要的朋友可以參考下

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

自定義打印特性

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

獲取枚舉值對應(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
擴展說明

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

在使用反射使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ù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!

相關(guān)文章

  • C#實現(xiàn)同Active MQ通訊的方法

    C#實現(xiàn)同Active MQ通訊的方法

    這篇文章主要介紹了C#實現(xiàn)同Active MQ通訊的方法,簡單分析了Active MQ的功能及C#與之通訊的實現(xiàn)技巧,需要的朋友可以參考下
    2016-07-07
  • c# 對cookies(增、刪、改、查)的操作方法

    c# 對cookies(增、刪、改、查)的操作方法

    以前覺得cookies操作無非就那么幾種,但是“杯具事件”還是很多的,下面分享一下對cookies的簡單操作
    2013-04-04
  • C#更新SQLServer中TimeStamp字段(時間戳)的方法

    C#更新SQLServer中TimeStamp字段(時間戳)的方法

    這篇文章主要介紹了C#更新SQLServer中TimeStamp字段(時間戳)的方法,涉及C#操作數(shù)據(jù)庫字段的相關(guān)技巧,需要的朋友可以參考下
    2015-05-05
  • C#打包應(yīng)用程序,與.NETFramework介紹

    C#打包應(yīng)用程序,與.NETFramework介紹

    C#打包應(yīng)用程序,與.NETFramework介紹,需要的朋友可以參考一下
    2013-05-05
  • C#調(diào)用FFplay實現(xiàn)播放視頻功能

    C#調(diào)用FFplay實現(xiàn)播放視頻功能

    這篇文章主要為大家詳細介紹了C#如何調(diào)用FFplay實現(xiàn)播放視頻功能,文中的示例代碼講解詳細,具有一定的參考價值,有需要的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-10-10
  • 使用C#表達式樹實現(xiàn)對象的深克隆(實例詳解)

    使用C#表達式樹實現(xiàn)對象的深克隆(實例詳解)

    C# 的表達式樹提供了一個強大的機制,可以將代碼以數(shù)據(jù)結(jié)構(gòu)的形式表示出來,使得代碼可以在運行時進行檢查、修改或執(zhí)行,這為動態(tài)查詢生成、代碼優(yōu)化和動態(tài)編程提供了很多可能性,這篇文章主要介紹了使用C#強大的表達式樹實現(xiàn)對象的深克隆,需要的朋友可以參考下
    2024-05-05
  • C# 通過ServiceStack 操作Redis

    C# 通過ServiceStack 操作Redis

    這篇文章主要介紹了C# 通過ServiceStack 操作Redis的示例,幫助大家更好的理解和學(xué)習(xí)使用c#,感興趣的朋友可以了解下
    2021-03-03
  • C#實現(xiàn)連接電子秤串口自動稱重

    C#實現(xiàn)連接電子秤串口自動稱重

    這篇文章介紹了C#實現(xiàn)連接電子秤串口自動稱重的方法,文中通過示例代碼介紹的非常詳細。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-04-04
  • 關(guān)于C# 類的封裝詳情

    關(guān)于C# 類的封裝詳情

    C#中可使用類來達到數(shù)據(jù)封裝的效果,這樣就可以使數(shù)據(jù)與方法封裝成單一元素,以便于通過,接下來小編將為大家詳細介紹,需要的朋友可以參考一下
    2021-10-10
  • C#中JSON轉(zhuǎn)為實體類和List以及結(jié)合使用

    C#中JSON轉(zhuǎn)為實體類和List以及結(jié)合使用

    開發(fā)中經(jīng)常遇到將JSON字符串轉(zhuǎn)換為List的需求,下面這篇文章主要給大家介紹了關(guān)于C#中JSON轉(zhuǎn)為實體類和List以及結(jié)合使用的相關(guān)資料,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2024-01-01

最新評論