/// <summary>
/// Get all enum descriptors.
/// </summary>
/// <param name="enumType">Enum type</param>
/// <returns>Enum descriptor list</returns>
public static IList<Descriptor<Int32>> GetEnumDescriptor(Type enumType) {
if (enumType == null)
throw new ArgumentNullException("enumType");
// Enum descriptor list
IList<Descriptor<Int32>> list = new List<Descriptor<Int32>>();
foreach (object valObj in Enum.GetValues(enumType)) {
Descriptor<Int32> item = new Descriptor<Int32>() {
Key = Convert.ToInt32(valObj),
Name = Enum.GetName(enumType, valObj)
};
list.Add(item);
}
return list;
}
/// <summary>
/// Get all enum descriptors.
/// </summary>
/// <typeparam name="E">Enum type</typeparam>
/// <returns>Enum descriptor list</returns>
public static IList<EnumDescriptor<E>> GetEnumDescriptor<E>() {
Type type = typeof(E);
if (!type.IsEnum)
throw new NotSupportedException("Only supported enum type.");
// Enum descriptor list
IList<EnumDescriptor<E>> list = new List<EnumDescriptor<E>>();
foreach (E value in Enum.GetValues(type)) {
EnumDescriptor<E> item = new EnumDescriptor<E>() {
Value = value
};
list.Add(item);
}
return list;
}
/// <summary>
/// Enum descriptor information.
/// </summary>
/// <typeparam name="E">Enum type</typeparam>
public class EnumDescriptor<E> : Descriptor<Int32> {
private E _Value;
/// <summary>
/// Enum original value
/// </summary>
public E Value {
get { return _Value; }
set {
_Value = value;
Key = Convert.ToInt32(value);
Name = Enum.GetName(typeof(E), value);
}
}
调用方法:
1.
ResourceTypeLookUpEdit.Properties.DataSource = EnumHelper.GetEnumDescriptor<ResourceType>();
2.
ResTypeLookupEdit.Properties.DataSource =
EnumHelper.GetEnumDescriptor(typeof(ResourceType));