一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語(yǔ)言|JavaScript|易語(yǔ)言|vb.net|

服務(wù)器之家 - 編程語(yǔ)言 - C# - c#枚舉值增加特性說(shuō)明(推薦)

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

2022-01-05 13:02冰不化 C#

這篇文章主要介紹了c#枚舉值增加特性說(shuō)明(推薦),需要的朋友可以參考下

通過(guò)特性給一個(gè)枚舉類型每個(gè)值增加一個(gè)字符串說(shuō)明,用于打印或顯示。

自定義打印特性

?
1
2
3
4
5
6
7
8
9
10
11
12
13
[AttributeUsage(AttributeTargets.Field)]
public class EnumDisplayAttribute : Attribute
{
 public EnumDisplayAttribute(string displayStr)
 {
  Display = displayStr;
 }
 public string Display
 {
  get;
  private set;
 }
}

打印特性定義很簡(jiǎn)單,只含有一個(gè)字符串屬性。

定義一個(gè)枚舉

?
1
2
3
4
5
6
7
8
public enum TestEnum
{
 [EnumDisplay("一")]
 one,
 [EnumDisplay("二")]
 two,
 three
}

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

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

?
1
2
3
4
5
6
7
8
9
10
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;
 }
}

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

獲取filed對(duì)應(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;

使用示例

?
1
2
3
4
5
6
7
8
9
10
11
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();
 }
}

輸出:

?
1
2
3
three
擴(kuò)展說(shuō)明

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

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

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

?
1
2
3
4
5
6
7
8
9
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#枚舉值增加特性說(shuō)明(推薦),希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)服務(wù)器之家網(wǎng)站的支持!

原文鏈接:http://www.cnblogs.com/theLife/archive/2017/05/11/6843483.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 四虎影视地址 | 爽好紧别夹宝贝叫大声点护士 | 四虎论坛| 999资源站 | 韩国三级年轻小的胰子完整 | 99国产情在线视频 | 国产一区二区三区水野朝阳 | 手机看片自拍 | 男人女人性生活视频 | 男生和女生艹逼 | 国产传媒在线播放 | 性欧美黑人巨大喷潮xxoo | 高跟翘臀老师后进式视频 | 四虎库 | 香港三级血恋3 | 无套啪啪 | 极品美女a∨片在线看 | 精品久久一 | 国产综合成人亚洲区 | 国产高清在线播放免费观看 | 国产精品久久现线拍久青草 | 按摩师他揉我奶好爽捏我奶 | 日本黄色录像视频 | 日日舔 | 精品一区二区三区五区六区七区 | 国产精品久久久久无毒 | 亚洲精品一二三四 | 乌克兰成人性色生活片 | 俄罗斯女同和女同xx | 韩国日本在线观看 | 四虎院影永久在线观看 | 高清日韩在线 | 欧美一级视频免费观看 | 青青草国产精品久久碰 | 免费的伦理片 | 国产精品久久久久久网站 | 国产精品玖玖玖影院 | 亚洲黄色高清 | 2019年国产高清情侣视频 | 国产亚洲欧美一区二区三区 | 欧美特欧美特级一片 |