using System;
using System.Linq;
using System.ComponentModel; namespace Demo.Common
{
/// <summary>
/// Enum帮助类
/// </summary>
public static class EnumHelper
{
/// <summary>
/// 获取枚举成员的值(this是扩展方法的标志)
/// </summary>
/// <param name="obj"></param>
/// <returns></returns>
public static int ToInt(this Enum obj)
{
return Convert.ToInt32(obj);
} public static T ToEnum<T>(this string obj) where T : struct
{
if (string.IsNullOrEmpty(obj))
{
return default(T);
}
try
{
return (T)Enum.Parse(typeof(T), obj, true);
}
catch (Exception)
{
return default(T);
}
} /// <summary>
/// 获取指定枚举成员的描述
/// </summary>
/// <param name="obj"></param>
/// <returns></returns>
public static string ToDescriptionString(this Enum obj)
{
var attribs = (DescriptionAttribute[])obj.GetType().GetField(obj.ToString()).GetCustomAttributes(typeof(DescriptionAttribute), false);
return attribs.Length > ? attribs[].Description : obj.ToString();
} /// <summary>
/// 根据枚举值,获取指定枚举类的成员描述
/// </summary>
/// <param name="type"></param>
/// <param name="id"></param>
/// <returns></returns>
public static string GetDescriptionString(this Type type, int? id)
{
var values = from Enum e in Enum.GetValues(type)
select new { id = e.ToInt(), name = e.ToDescriptionString() }; if (!id.HasValue) id = ; try
{
return values.ToList().Find(c => c.id == id).name;
}
catch
{
return "";
}
}
}
}

C# 枚举操作扩展类的更多相关文章

  1. C# Enum枚举类型操作扩展类

    使用示例: using System.ComponentModel; namespace SchoolEnterpriseManageSys.Enum { /// <summary> // ...

  2. C#操作Xml树的扩展类

    本文提供一个操作Xml树的扩展类,与将xml字符串直接映射成实体对象的使用方法,供大家参考,学习. 下面附上源码 using System; using System.Collections.Gene ...

  3. C#枚举(一)使用总结以及扩展类分享

    0.介绍 枚举是一组命名常量,其基础类型为任意整型. 如果没有显式声明基础类型, 则为Int32 在实际开发过程中,枚举的使用可以让代码更加清晰且优雅. 最近在对枚举的使用进行了一些总结与整理,也发现 ...

  4. Java+7入门经典 - 6 扩展类与继承 Part 1/2

    第6章 扩展类与继承 面向对象编程的一个重要特性: 允许基于已定义的类创建新的类; 6.1 使用已有的类 派生 derivation, 派生类 derived class, 直接子类 direct s ...

  5. JAVA枚举操作(获取值,转map集合)

    JAVA枚举相对来说比.NET的枚举功能强大,感觉就像是一种简化版的类对象,可以有构造方法,可以重载,可以继承接口等等,但不能继承类,JAVA枚举在实际开发中应用相当频繁,以下几个封装方法在实际开发中 ...

  6. XML格式示例 与 XML操作(读取)类封装

    header('Content-Type: text/xml'); <?xml version="1.0" encoding="utf-8" standa ...

  7. C# 集合已修改;可能无法执行枚举操作

    在winform 项目时遇到: 集合已修改;可能无法执行枚举操作的问题 错误原因:当用foreach遍历Collection时,如果对Collection有Add或者Remove或其他类似操作都会有这 ...

  8. [asp.net mvc 奇淫巧技] 03 - 枚举特性扩展解决枚举命名问题和支持HtmlHelper

    一.需求 我们在开发中经常会遇到一些枚举,而且这些枚举类型可能会在表单中的下拉中,或者单选按钮中会用到等. 这样用是没问题的,但是用过的人都知道一个问题,就是枚举的命名问题,当然有很多人枚举直接中文命 ...

  9. 【转载】微软官方提供的Sqlserver数据库操作帮助类SQLHelper类

    在.NET平台中,C#语言一般使用ADO.NET组件来操作Sqlserver数据库,通过ADO.NET组件可以实现连接数据库.查询数据集.执行SQL语句以及关闭数据库连接等操作,为此网上有很多开发者自 ...

随机推荐

  1. C#如何读写和创建INI文件

    在做项目过程中,有时需要保存一些简单的配置信息,可以使用xml,也可以使用INI文件.下面是C#中读取INI的方法,相信大部分朋友都使用过这种方式.INI文件的存储方式如下, [section] ke ...

  2. tachyon with spark

    spark1.2.0  tachyon0.5.0 jdk1.7 scala2.10.4 1.装好spark.tachyon.jdk.scala 2.修改spark-env.sh添加Tachyon客户端 ...

  3. tachyon with hadoop

    hadoop2.2.0 jdk1.7 tachyon0.5.0 无zookeeper tachyon和hadoop都是伪分布式模式 1.修改core-site.xml文件 <property&g ...

  4. 3.4html学习笔记之表格

    <table border=""style="border-collapse:collapse"> <caption>表格</ca ...

  5. jquery学习笔记2

    1.点击时文字消失,失去焦点时文字再出现 <input type="text" value="郭强" onfocus="if(value=='郭 ...

  6. iOS-UISearchBar和UISearchController(参考网友来练习一下)

    #import "ViewController.h" #import "TestCell.h" @interface ViewController ()< ...

  7. 创建对象_原型(Prototype)模式_深拷贝

      举例:     刚给我的客厅做了装修,朋友也希望给他的客厅做装修,他可能会把我家的装修方案拿过来改改就成,我的装修方案就是原型.   定义:     使用原型实例指定将要创建的对象类型,通过复制这 ...

  8. Android 常用 adb 命令

    查看原文:http://blog.csdn.net/u010818425/article/details/52266593 (一)基础操作 安装app adb install -r xxx.apk / ...

  9. Oracle基础 存储过程

    一.子程序 子程序是已命名的PL/SQL块,它们存储在数据库中,可以Wie它们指定参数,可以从任何数据库客户端和应用程序中调用它们.子程序包括存储过程和函数. 子程序包括: 1.声明部分:声明部分包括 ...

  10. pyenv的安装和使用

    1. 先安装crul和git sudo apt-get install curl git-core 2. 安装pyenv curl https://raw.github.com/yyuu/pyenv- ...