全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

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#  # 枚举值增加特性  # c  # 枚举  # 特性  # C# 从枚举值获取对应的文本描述详解  # C# 获取枚举值的简单实例  # C#枚举数值与名称的转换实例分享  # 自定义  # 小编  # 在此  # 给大家  # 很简单  # 可以使用  # 亦可  # 所述  # 给我留言  # 感谢大家  # 等均  # 增加了  # 疑问请  # 有任何  # EnumDisplay  # enum  # set  # private  # TestEnum  # GetName 


相关文章: ,怎么用自己头像做动态表情包?  家庭服务器如何搭建个人网站?  官网自助建站系统:SEO优化+多语言支持,快速搭建专业网站  javascript基本数据类型及类型检测常用方法小结  如何快速上传自定义模板至建站之星?  如何通过wdcp面板快速创建网站?  手机钓鱼网站怎么制作视频,怎样拦截钓鱼网站。怎么办?  矢量图网站制作软件,用千图网的一张矢量图做公司app首页,该网站并未说明版权等问题,这样做算不算侵权?应该如何解决?  网站网页制作专业公司,怎样制作自己的网页?  如何在Mac上搭建Golang开发环境_使用Homebrew安装和管理Go版本  高性能网站服务器部署指南:稳定运行与安全配置优化方案  制作假网页,招聘网的薪资待遇,会有靠谱的吗?一面试又各种折扣?  宝塔Windows建站如何避免显示默认IIS页面?  北京网站制作公司哪家好一点,北京租房网站有哪些?  如何在新浪SAE免费搭建个人博客?  Thinkphp 中 distinct 的用法解析  小说建站VPS选用指南:性能对比、配置优化与建站方案解析  表情包在线制作网站免费,表情包怎么弄?  如何制作新型网站程序文件,新型止水鱼鳞网要拆除吗?  html制作网站的步骤有哪些,iapp如何添加网页?  在线制作视频的网站有哪些,电脑如何制作视频短片?  建站之星如何快速生成多端适配网站?  北京网站制作网页,网站升级改版需要多久?  建站之星代理如何获取技术支持?  企业微网站怎么做,公司网站和公众号有什么区别?  免费的流程图制作网站有哪些,2025年教师初级职称申报网上流程?  网页制作模板网站推荐,网页设计海报之类的素材哪里好?  如何在阿里云ECS服务器部署织梦CMS网站?  专业企业网站设计制作公司,如何理解商贸企业的统一配送和分销网络建设?  家庭建站与云服务器建站,如何选择更优?  网站微信制作软件,如何制作微信链接?  高配服务器限时抢购:企业级配置与回收服务一站式优惠方案  建站主机与服务器功能差异如何区分?  网站制作软件有哪些,制图软件有哪些?  微信小程序 input输入框控件详解及实例(多种示例)  如何通过免费商城建站系统源码自定义网站主题与功能?  打鱼网站制作软件,波克捕鱼官方号怎么注册?  如何在万网开始建站?分步指南解析  香港服务器网站搭建教程-电商部署、配置优化与安全稳定指南  小型网站制作HTML,*游戏网站怎么搭建?  制作网站的模板软件,网站怎么建设?  如何自己制作一个网站链接,如何制作一个企业网站,建设网站的基本步骤有哪些?  建站之星免费模板:自助建站系统与智能响应式一键生成  电商网站制作价格怎么算,网上拍卖流程以及规则?  北京制作网站的公司,北京铁路集团官方网站?  建站之星后台管理如何实现高效配置?  如何在阿里云部署织梦网站?  建站之星会员如何解锁更多建站功能?  如何快速搭建二级域名独立网站?  建站之星手机一键生成:多端自适应+小程序开发快速建站指南 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。