通过特性给一个枚举类型每个值增加一个字符串说明,用于打印或显示。

自定义打印特性
[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小时内与您取得联系。