Enum使用 获取枚举属性

注意:扩展方法必须定义为静态类,静态方法中。

  1. public enum EnumPatientSource
  2. {
  3. [Description("住院")]
  4. INHOSPITAL = -1,
  5.  
  6. [Description("门诊")]
  7. OUTPATIENT = 0,
  8. }
  9.  
  10. public static class EnumHelper
  11. {
  12. public static string ToDescription(this Enum val)
  13. {
  14. var type = val.GetType();
  15. var memberInfo = type.GetMember(val.ToString());
  16. var attributes = memberInfo[0].GetCustomAttributes(typeof(DescriptionAttribute), false);
  17. //如果没有定义描述,就把当前枚举值的对应名称返回
  18. if (attributes == null || attributes.Length != 1) return val.ToString();
  19.  
  20. return (attributes.Single() as DescriptionAttribute).Description;
  21. }
  22. }

测试使用如下所示:

  1. private void button2_Click(object sender, EventArgs e)
  2. {
  3. StringBuilder buf = new StringBuilder(1024);
  4. buf.AppendLine("枚举==" + EnumPatientSource.INHOSPITAL);
  5. buf.AppendLine("枚举属性==" + EnumHelper.ToDescription(EnumPatientSource.INHOSPITAL));
  6. MessageBox.Show(buf.ToString());
  7. }

C# Enum 获取枚举属性的更多相关文章

  1. C# 获取枚举的描述属性

    在使用枚举类型时,我们需要取名称和值,甚至有时候还需要取枚举类型的描述.通过反射,我们能获取到枚举类型的描述属性. 首先我们需要给枚举类型添加描述属性(属性都没有是不可能取到的),[Descripti ...

  2. 枚举Enum转换为List,获取枚举的描述

    代码: public class EnumberHelper { public static List<EnumberEntity> EnumToList<T>() { Lis ...

  3. 【Javascript-基础-getOwnPropertyNames】Object.getOwnPropertyNames() 获取对象自身可枚举属性

    可枚举属性和不可枚举属性 在JavaScript中,对象的属性分为可枚举和不可枚举之分,它们是由属性的enumerable值决定的.可枚举性决定了这个属性能否被for-in查找遍历到. 可枚举属性 e ...

  4. CSP介绍、以及使用CryptoAPI枚举CSP并获取其属性

    CSP,全名为"加密服务提供者(Cryptographic Service Provider)",是微软定义的一套password服务API.眼下经常使用的password规范或者 ...

  5. 第三章 EnumUtil根据值获取枚举对象

    项目中使用枚举类的好处这里不再赘述,在使用枚举值时,通常需要根据值来获取枚举对象,下面介绍两种实现方案: 1.在枚举类中定义方法实现 首先给出如下性别枚举类: public enum SexEnum ...

  6. 实体类的枚举属性--原来支持枚举类型这么简单,没有EF5.0也可以

    通常,我们都是在业务层和界面层使用枚举类型,这能够为我们编程带来便利,但在数据访问层,不使用枚举类型,因为很多数据库都不支持,比如我们现在用的SqlServer2008就不支持枚举类型的列,用的时候也 ...

  7. c#获取枚举

    在实际开发项目中,我们定义了一个枚举,往往我们需要在下拉框或其它地方展示枚举.为了加深印象,也为了帮到有需要的人,我写了一个DEMO. 第一步,我们定义一个枚举: /// <summary> ...

  8. Enum(枚举)示例

    package main; public class EnumTest { /**     * 普通枚举     */    public enum ColorEnum {        red, g ...

  9. C# .NET 获取枚举值的自定义属性(特性/注释/备注)信息

    一.引言 枚举为我看日常开发的可读性提供的非常好的支持,但是有时我们需要得到枚举值得描述信息或者是注释(备注)信息 比如要获得 TestEmun.aaa 属性值得备注 AAA,比较不方便得到. pub ...

随机推荐

  1. oracle 判断字段内是否含中文

    select * from tabell(表名) where asciistr(字段) like '%\%';

  2. 2017-9-3模拟赛T3 密码(key)

    题目 题解 这题用类似暴力+优化(划掉)的思想. 对于每个轨迹串,求出每一位向后的第一个0-9间某个数字的位置(如123112中3后面第1个2的位置为从左往右数第6个),复杂度O(Σn)=O(L). ...

  3. C#连接字符串

    1."Data Source=服务器名; Initial Catalog=数据库; User ID =用户名; Password=密码; Charset=UTF8; " 2.&qu ...

  4. 常见问题一之拼接表格 js传递参数变量 Json接收值

    1.前台拼接表格时,有时候需要使用拼接html字符串,需要多次循环拼接的,放在方法里边: //ary可以是数组中的一组数据.function(ary){var MyHtml="<tr& ...

  5. MySQL之内连接、左连接和右连接

    数据表内数据如下: books表:                                                                                    ...

  6. npm 镜像源替换为淘宝镜像

    1.查询配置的镜像源地址: npm get registry 2.配置为淘宝镜像源 npm config set registry http://registry.npm.taobao.org/ 3. ...

  7. Including R code in perl

    #example: use Statistics::R;#use R in perlmy $R = Statistics::R->new() ;$R->startR ;$R->sen ...

  8. 关于html2canvas跨域设置

    最近在做js生成图片的功能,因为有的商户logo图片在阿里云oss存储的,所以遇到了跨域的问题.跨域的话可以在服务器端设置header, 跨域的话目前的解决方案是服务端设置,Access-Contro ...

  9. vue插件

    Vue.js提供了插件机制,可以在全局添加一些功能.它们可以简单到几个方法.属性,也可以很复杂,比如一整套组件库. 注册插件需要一个公开的方法install,它的第一个参数是Vue构造器,第二个参数是 ...

  10. 20175120彭宇辰 《Java程序设计》第六周学习总结

    教材学习内容总结 第七章 一.内部类与外部类的关系 1.内部类可以使用外嵌类的成员变量和方法.2.类体中不可以声明类变量和类方法,外部类可以用内部类声明对象.3.内部类仅供外嵌类使用.4.类声明可以使 ...