您的位置:首页 > 编程语言 > C#

C# 枚举操作扩展类

2014-01-22 11:01 429 查看
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 > 0 ? attribs[0].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 = 0;

try
{
return values.ToList().Find(c => c.id == id).name;
}
catch
{
return "";
}
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: