时间:2021-05-20
通过特性给一个枚举类型每个值增加一个字符串说明,用于打印或显示。
自定义打印特性
[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; }}获取枚举值对应的枚举filed字符串 var fieldName = Enum.GetName(typeof(TestEnum), t);
获取filed对应的所有自定义特性集合 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#枚举值增加特性说明(推荐),希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
C#从枚举值获取对应的文本描述详解有时枚举值在显示时,需要显示枚举值对应的文本串。一种方案是在调用的地方使用switch或者if来判断枚举值,然后赋给不同的文本
一、枚举的概念: C#枚举(Enum),枚举类型是用于声明一组命名的常数的基本数据类型(值类型);二、枚举的定义: 声明enum变量:enum{enumer
一、枚举的概念:C#枚举(Enum),枚举类型是用于声明一组命名的常数的基本数据类型(值类型);二、枚举的定义:声明enum变量: enum{enumerati
C#中遍历各类数据集合的方法,这里自己做下总结:1.枚举类型复制代码代码如下://遍历枚举类型Sample的各个枚举名称foreach(stringspinEn
本文以一个简单实例讲述了C#实现获取枚举中元素个数的方法,对于C#学习来说是需要加以牢固掌握的技巧。分享给大家供大家参考之用。具体如下:实现该功能可以使用枚举基