プログラミング.NET Framework 第4版 (Microsoft Press)
- 作者: Jeffrey Richter,藤原雄介
- 出版社/メーカー: 日経BP社
- 発売日: 2013/10/10
- メディア: 単行本
- この商品を含むブログ (9件) を見る
EnumHelperクラス(C#)
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.ComponentModel; using System.Reflection; namespace Utility.Helper { /// <summary> /// 列挙型ヘルパークラス /// </summary> public static class EnumHelper { #region 定義チェック /// <summary> /// 定義チェック /// </summary> /// <typeparam name="Type">列挙型</typeparam> /// <param name="value">数値</param> /// <returns>定義されている場合はtrue、そうでなけれfalse</returns> public static bool IsDefined<Type>(int value) { return Enum.IsDefined(typeof(Type), value); } #endregion #region 数値から文字列へ変換 /// <summary> /// 文字列へ変換 /// </summary> /// <typeparam name="Type">列挙型</typeparam> /// <param name="value">数値</param> /// <returns>文字列を返却(定義されていない場合は空文字を返却)</returns> public static string ConvertString<Type>(int value) { return Enum.GetName(typeof(Type), value); } #endregion #region 数値から列挙型に変換 /// <summary> /// 数値から列挙型に変換 /// </summary> /// <typeparam name="Type">列挙型</typeparam> /// <param name="value">数値</param> /// <returns>列挙型</returns> public static Type ConvertEnum<Type>(int value) { return (Type)Enum.ToObject(typeof(Type), value); } #endregion #region 文字列から列挙型に変換 /// <summary> /// 文字列から列挙型に変換 /// </summary> /// <typeparam name="Type">列挙型</typeparam> /// <param name="value">文字列</param> /// <returns>列挙型</returns> public static Type ConvertEnum<Type>(string value) { return (Type)Enum.Parse(typeof(Type), value, true); } #endregion #region 列挙体のメンバの名前を取得 /// <summary> /// 列挙体のメンバの名前を取得 /// </summary> /// <typeparam name="Type">列挙型</typeparam> /// <returns>列挙体のメンバの名前</returns> public static IEnumerable<string> GetNames<Type>() { return typeof(Type).GetEnumNames(); } #endregion #region 列挙体のメンバの値を取得 /// <summary> /// 列挙体のメンバの値を取得 /// </summary> /// <typeparam name="Type">列挙型</typeparam> /// <returns>列挙体のメンバの値</returns> public static Array GetValues<Type>() { return typeof(Type).GetEnumValues(); } #endregion #region 列挙体のリストを取得 /// <summary> /// 列挙体のリストを取得 /// </summary> /// <typeparam name="Type">列挙型</typeparam> /// <returns>列挙体のリスト</returns> public static List<Type> GetList<Type>() { return Enum.GetValues(typeof(Type)).Cast<Type>().ToList(); } #endregion #region Descriptionを取得 /// <summary> /// Descriptionを取得 /// </summary> /// <param name="en">Enum値</param> /// <returns>Description</returns> public static string GetDescription(Enum en) { Type type = en.GetType(); MemberInfo[] memInfo = type.GetMember(en.ToString()); if (memInfo != null && memInfo.Length > 0) { object[] attrs = memInfo[0].GetCustomAttributes(typeof(DescriptionAttribute), false); if (attrs != null && attrs.Length > 0) { return ((DescriptionAttribute)attrs[0]).Description; } } return en.ToString(); } #endregion #region Enumの値とDescriptionの値を設定したDictionaryを返却 /// <summary> /// Enumの値とDescriptionの値を設定したDictionaryを返却 /// </summary> /// <typeparam name="Type">列挙型</typeparam> /// <returns>Enumの値とDescriptionの値を設定したDictionary</returns> public static Dictionary<int, string> GetDictionary<Type>() { var dic = new Dictionary<int, string>(); foreach (var item in EnumHelper.GetValues<Type>()) { dic.Add((int)item, EnumHelper.GetDescription((Enum)item)); } return dic; } #endregion } }