Files
Shrlalgo.RvKits/ShrlAlgoToolkit.RevitAddins/Converters/EnumDescriptionTypeConverter.cs
2026-02-20 16:47:26 +08:00

40 lines
1.2 KiB
C#

using System.ComponentModel;
using System.Globalization;
using System.Reflection;
namespace ShrlAlgoToolkit.RevitAddins.Converters;
/// <summary>
/// 枚举类上加特性[TypeConverter(typeof(EnumDescriptionTypeConverter))]
/// </summary>
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);
}
}