ابتدا کلاسی بصورت زیر تعریف کنید
using System.Reflection;
using System.Globalization;
class MyConverter : EnumConverter
{
private Type _enumType;
public MyConverter(Type type) : base(type)
{
_enumType = type;
}
public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destType)
{
FieldInfo fi = _enumType.GetField(Enum.GetName(_enumType, value));
DescriptionAttribute dna = (DescriptionAttribute)Attribute.GetCustomAttribute (
fi, typeof(DescriptionAttribute));
if (dna != null)
return dna.Description;
else
return value.ToString();
}
public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value)
{
foreach (FieldInfo fi in _enumType.GetFields())
{
DescriptionAttribute dna =
(DescriptionAttribute)Attribute.GetCustomAttribute (
fi, typeof(DescriptionAttribute));
if ((dna != null) && ((string)value == dna.Description))
return Enum.Parse(_enumType, fi.Name);
}
return Enum.Parse(_enumType, (string)value);
}
}
بعد enum و پراپرتی مورد نظرتون رو بصورت زیر تغییر بدید.
public enum MyEnum
{
[Description("2008 - Black")]
Black2008,
[Description("2009 - Blue")]
Blue2009
}
[TypeConverter(typeof(MyConverter))]
public MyEnum MyProp{ get; set; }