Tôi muốn thêm một giải pháp khác: Trong trường hợp của tôi, tôi cần sử dụng nhóm Enum trong các mục danh sách nút thả xuống. Vì vậy, họ có thể có không gian, tức là cần có nhiều mô tả thân thiện với người dùng hơn:
public enum CancelReasonsEnum
{
[Description("In rush")]
InRush,
[Description("Need more coffee")]
NeedMoreCoffee,
[Description("Call me back in 5 minutes!")]
In5Minutes
}
Trong một lớp người trợ giúp (HelperMethods), tôi đã tạo phương thức sau:
public static List<string> GetListOfDescription<T>() where T : struct
{
Type t = typeof(T);
return !t.IsEnum ? null : Enum.GetValues(t).Cast<Enum>().Select(x => x.GetDescription()).ToList();
}
Khi bạn gọi người trợ giúp này, bạn sẽ nhận được danh sách mô tả mục.
List<string> items = HelperMethods.GetListOfDescription<CancelReasonEnum>();
BỔ SUNG: Trong mọi trường hợp, nếu bạn muốn thực hiện phương pháp này, bạn cần: Phần mở rộng GetDescription cho enum. Đây là những gì tôi sử dụng.
public static string GetDescription(this Enum value)
{
Type type = value.GetType();
string name = Enum.GetName(type, value);
if (name != null)
{
FieldInfo field = type.GetField(name);
if (field != null)
{
DescriptionAttribute attr =Attribute.GetCustomAttribute(field,typeof(DescriptionAttribute)) as DescriptionAttribute;
if (attr != null)
{
return attr.Description;
}
}
}
return null;
/* how to use
MyEnum x = MyEnum.NeedMoreCoffee;
string description = x.GetDescription();
*/
}