日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > C# >内容正文

C#

[小技巧]C#中如何为枚举类型添加描述方法

發(fā)布時(shí)間:2023/12/4 C# 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [小技巧]C#中如何为枚举类型添加描述方法 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

背景

在我們的日常開發(fā)中,我們會(huì)經(jīng)常使用枚舉類型。有時(shí)我們只需要顯示枚舉的值或者枚舉值對(duì)應(yīng)名稱, 但是在某些場(chǎng)景下,我們可能需要將枚舉值顯示為不同的字符串。

例: 當(dāng)前我們有如下枚舉Level

這個(gè)枚舉有4個(gè)可選值B, N, G, VG。 現(xiàn)在我們希望用Bad, Normal, Good, Very Good作為B, N, G, VG的顯示值。

那我們會(huì)怎么做呢?通常我們最常想到的就是針對(duì)Level枚舉類型編寫一個(gè)擴(kuò)展方法。

以上的代碼在我們的項(xiàng)目中很常用。但是這里有2個(gè)潛在的問題:

  • 我們的項(xiàng)目中可能不止一種枚舉類型,所以我們可能就需要為每一種類型都添加一個(gè)對(duì)應(yīng)的擴(kuò)展方法。

  • 枚舉值和枚舉的顯示值的代碼位置是分離的,如果你查找枚舉值對(duì)應(yīng)的顯示值,你就要先去找到對(duì)應(yīng)的枚舉擴(kuò)展方法。

那么如何改進(jìn)這部分代碼,從而消除上述2個(gè)問題呢,這時(shí)候我們就要引入.NET中的文本描述屬性類DescriptionAttribute。


使用DescriptionAttribute重構(gòu)代碼

其實(shí).NET中已經(jīng)提供了一個(gè)文本描述屬性類DescriptionAttribute, 這個(gè)屬性類的構(gòu)造函數(shù)可以接收一段文字描述。

下面我們使用DescriptionAttribute來改造Level枚舉類型。

這樣我們上面提到的第二個(gè)問題就解決了,現(xiàn)在Level枚舉類型的枚舉值和顯示值就都封裝在了一起。

那么第一個(gè)問題該怎么解決呢?

這里我們可以針對(duì)Enum類型添加擴(kuò)展方法,并使用反射讀取當(dāng)前枚舉值所對(duì)應(yīng)的顯示值

由于Enum類型是所有枚舉類型的基類型,所以所有的枚舉類型都可以使用這個(gè)擴(kuò)展方法。

總結(jié)

本篇博文中,我們講解了如果如何.NET內(nèi)置的文本描述屬性類DescriptionAttribute來生成枚舉值對(duì)應(yīng)的文本,它不僅可以減少重復(fù)代碼,還可以讓整個(gè)枚舉類型的內(nèi)聚性更高。

總結(jié)

以上是生活随笔為你收集整理的[小技巧]C#中如何为枚举类型添加描述方法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。