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

获取枚举值对应的枚举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#枚举值增加特性说明(推荐),希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

相关文章

  • C#正则表达式(Regex类)用法实例总结

    C#正则表达式(Regex类)用法实例总结

    正则表达式的主要作用是验证字符串的值是否满足一定的规则,在页面输入数据验证方面的应用比较多,下面这篇文章主要给大家介绍了关于C#正则表达式(Regex类)用法的相关资料,需要的朋友可以参考下
    2022-08-08
  • c# Invoke和BeginInvoke 区别分析

    c# Invoke和BeginInvoke 区别分析

    这篇文章主要介绍了c# Invoke和BeginInvoke 区别分析,需要的朋友可以参考下
    2014-10-10
  • 深入C#字符串和享元(Flyweight)模式的使用分析

    深入C#字符串和享元(Flyweight)模式的使用分析

    本篇文章是对C#字符串与享元(Flyweight)模式的使用进行了详细的分析介绍,需要的朋友参考下
    2013-05-05
  • c#冒泡排序示例分享

    c#冒泡排序示例分享

    这篇文章主要介绍了c#冒泡排序示例分享,需要的朋友可以参考下
    2014-02-02
  • C#实现简单播放mp3的方法

    C#实现简单播放mp3的方法

    这篇文章主要介绍了C#实现简单播放mp3的方法,涉及C#播放多媒体文件的技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-03-03
  • C#实现字符串倒序的写法

    C#实现字符串倒序的写法

    这篇文章主要为大家详细介绍了C#实现字符串倒序的多种写法,以LINQ写法最为简洁,感兴趣的朋友可以参考一下
    2016-05-05
  • Log4Net 日志配置[附带源码下载]

    Log4Net 日志配置[附带源码下载]

    这篇文章主要介绍了Log4Net 日志配置[附带源码下载],需要的朋友可以参考下
    2015-05-05
  • C#数据适配器DataAdapter

    C#数据适配器DataAdapter

    这篇文章介绍了C#中的数据适配器DataAdapter,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-05-05
  • WPF实现在线预览和显示Word和PDF文件

    WPF实现在线预览和显示Word和PDF文件

    这篇文章主要为大家详细介绍了如何使用WPF实现在线预览和显示Word和PDF文件,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2024-02-02
  • C#客户端程序Visual Studio远程调试的方法详解

    C#客户端程序Visual Studio远程调试的方法详解

    这篇文章主要给大家介绍了关于C#客户端程序Visual Studio远程调试的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-09-09

最新评论