using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections;
using System.Reflection;
namespace CommonFunction
{
public class EnumClass
{
private static object refLock = new object();
private static EnumClass instance=null;
public static EnumClass Instance
{
get {
lock (refLock)
{
if (instance == null)
{
lock (refLock)
{
instance = new EnumClass();
}
}
}
return instance;
}
}
/// <summary>
/// 获取指定枚举类型的键值对集合
/// </summary>
/// <param name="type">枚举类型</param>
/// <returns></returns>
public Hashtable GetKeysAndValues(Type type)
{
if (!CheckType(type))
{
return null;
}
Hashtable list = new Hashtable();
foreach (string key in Enum.GetNames(type))
{
string val=Enum.Format( type, Enum.Parse(type, key), "d");
list.Add(key,val);
}
return list;
}
/// <summary>
/// 获取枚举类型元素集合
/// </summary>
/// <param name="type">枚举类型</param>
/// <returns></returns>
public Array GetKeys(Type type)
{
if (!CheckType(type))
{
return null;
}
//检索指定枚举中常数值的数组
return Enum.GetValues(type);
}
/// <summary>
/// 检验枚举类型
/// </summary>
/// <param name="type">类型</param>
/// <returns></returns>
private bool CheckType(Type type)
{
if (type == null)
{
return false;
}
if (!type.IsEnum)
{
throw new Exception(type.FullName + "不是枚举类型");
}
return true;
}
/// <summary>
/// 获取枚举类型值集合
/// </summary>
/// <param name="type">枚举类型</param>
/// <returns></returns>
public List<int> GetValues(Type type)
{
Array array = GetKeys(type);
List<int> list = new List<int>();
foreach (object obj in array)
{
list.Add((int)obj);
}
return list;
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections;
namespace CommonFunction
{
class Program
{
enum Days { Sunday = 0, Monday = 1, Tuesday = 2, Wednesday = 3, Thursday = 4, Friday = 5, Saturday = 6 };
static void Main(string[] args)
{
Hashtable hashtable= EnumClass.Instance.GetKeysAndValues(typeof(Days));
Console.WriteLine("---------枚举类型键值对---------");
foreach (DictionaryEntry de in hashtable)
{
Console.WriteLine(de.Key+" = "+de.Value);
}
Console.WriteLine();
Console.WriteLine("---------枚举类元素---------");
Array array = EnumClass.Instance.GetKeys(typeof(Days));
foreach (Days day in array)
{
Console.WriteLine(day);
}
Console.WriteLine();
Console.WriteLine("---------枚举类值---------");
List<int> list = EnumClass.Instance.GetValues(typeof(Days));
foreach (int i in list)
{
Console.WriteLine(i);
}
Console.ReadLine();
}
}
}