特性(Attribute)是將額外數據關聯到一個屬性(以及其他構造)的一種方式,而枚舉則是在編程中最常用的一種構造,枚舉本質上其實是一些常量值,相對於直接使用這些常量值,枚舉為我們提供了更好的可讀性。我們知道枚舉的基礎類型只能是值類型(byte、sbyte、short、ushort、int、uint、long 或 ulong),一般的情況下枚舉能夠滿足我們的需求,但是有時候我們需要為枚舉附加更多信息,僅僅只是使用這些值類型是不夠的,這時通過對枚舉類型應用特性可以使枚舉帶有更多的信息。
首先引入: 命名空間,下面是一個枚舉應用了特性:
[Description( [Description( [Description( }
下面是一個獲取Description特性的擴展方法:
GetDescription<TEnum>( TEnum : Type type = (! ArgumentException(, MemberInfo[] memberInfo = (memberInfo != && memberInfo.Length > [] attrs = memberInfo[].GetCustomAttributes((DescriptionAttribute), (attrs != && attrs.Length > ((DescriptionAttribute)attrs[ }
最後,我們就可以利用該擴展方法獲取該枚舉值得描述信息了:
Main( description = }