using System.ComponentModel; using System.Globalization; using System.Reflection; using ShrlAlgoToolkit.RevitAddins.Converters; using ShrlAlgoToolkit; using ShrlAlgoToolkit.Mvvm; namespace ShrlAlgoToolkit.RevitAddins.Converters; /// /// 枚举类上加特性[TypeConverter(typeof(EnumDescriptionTypeConverter))] /// public class EnumDescriptionTypeConverter : EnumConverter { public EnumDescriptionTypeConverter(Type type) : base(type) { } public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType) { if (destinationType == typeof(string)) { if (null != value) { FieldInfo fi = value.GetType().GetField(value.ToString()); if (null != fi) { var attributes = (DescriptionAttribute[])fi.GetCustomAttributes(typeof(DescriptionAttribute), false); return ((attributes.Length > 0) && (!string.IsNullOrEmpty(attributes[0].Description))) ? attributes[0].Description : value.ToString(); } } return string.Empty; } return base.ConvertTo(context, culture, value, destinationType); } }