C#怎样给枚举类型增加一个描述特性-创新互联
这篇文章给大家分享的是有关C#怎样给枚举类型增加一个描述特性的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。
创新互联建站是一家专业提供宁蒗企业网站建设,专注与网站设计、成都网站设计、H5页面制作、小程序制作等业务。10年已为宁蒗众多企业、政府机构等服务。创新互联专业网站建设公司优惠进行中。前言
相信很多人对枚举并不陌生,枚举可以很方便和直观的管理一组特定值。如果我们在页面上直接输出我们希望匹配的汉语意思或则其他满足我们需求的语句就更好了,当然,通常小伙伴们都会再页面上if(enum==1) “我是一个枚举”或者switch(enum)这种方式解决。
枚举的优点:
<1>枚举可以使代码更易于维护,有助于确保给变量指定合法的、期望的值。
<2>枚举使代码更清晰,允许用描述性的名称表示整数值,而不是用含义模糊的数来表示。
<3>枚举使代码更易于键入。在给枚举类型的实例赋值时,VS.NET IDE会通过IntelliSense弹出一个包含可接受值的列表框,减少了按键次数,并能够让我们回忆起可能的值
那今天我们就来介绍一种更优雅的解决方法
开整
先定义一个枚举类
enum StatusEnum { [Description("修改")] Update = 1, [Description("新增")] Insert = 2, [Description("删除")] Delete = 3 }
Description是属性特性的意思。记住即可
大家要记住,所有的特性类必须继承自 Attribute,所以,我们自定义一个特性类
////// 备注特性 /// public class RemarkAttribute : Attribute { ////// 备注 /// public string Remark { get; set; } public RemarkAttribute(string remark) { this.Remark = remark; } }
有了这个特性类之后呢,我们还需要一个枚举扩展类
////// 枚举扩展类 /// public static class EnumExtension { ////// 获取枚举的备注信息 /// /// ///public static string GetRemark(this Enum value) { FieldInfo fi = value.GetType().GetField(value.ToString()); if (fi == null) { return value.ToString(); } object[] attributes = fi.GetCustomAttributes(typeof(RemarkAttribute), false); if (attributes.Length > 0) { return ((RemarkAttribute)attributes[0]).Remark; } else { return value.ToString(); } } public static string GetEnumDescription(this Enum value) { FieldInfo fi = value.GetType().GetField(value.ToString()); DescriptionAttribute[] attributes = (DescriptionAttribute[])fi.GetCustomAttributes(typeof(DescriptionAttribute), false); if (attributes.Length > 0) { return attributes[0].Description; } else { return value.ToString(); } } }
需要引入命名空间:
using System.Collections.Generic; using System.ComponentModel;
有了这个枚举扩展类,我们就可以直接使用了
Console.WriteLine((int)StatusEnum.Insert);//输出原有枚举值 Console.WriteLine(StatusEnum.Insert.GetRemark());//获取枚举备注信息 Console.WriteLine(StatusEnum.Insert.GetEnumDescription());//获取枚举特性值
调试过程
感谢各位的阅读!关于“C#怎样给枚举类型增加一个描述特性”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
分享文章:C#怎样给枚举类型增加一个描述特性-创新互联
浏览路径:http://myzitong.com/article/ccejhe.html