using HStation.RevitDev.Model.ModelEnum;
using System;
using System.ComponentModel;
using System.Reflection;
namespace HStation.RevitDev.RevitDataExport.Common
{
///
/// 描述特性的读取扩展类
///
public static class DescriptionExtension
{
///
/// 获取枚举的描述信息
///
public static string GetDescription(this RevitType em)
{
Type type = em.GetType();
FieldInfo fd = type.GetField(em.ToString());
string des = fd.GetDescription();
return des;
}
///
/// 获取属性的描述信息
///
public static string GetDescription(this Type type, string proName)
{
PropertyInfo pro = type.GetProperty(proName);
string des = proName;
if (pro != null)
{
des = pro.GetDescription();
}
return des;
}
///
/// 获取属性的描述信息
///
public static string GetDescription(this MemberInfo info)
{
var attrs = (DescriptionAttribute[])info.GetCustomAttributes(typeof(DescriptionAttribute), false);
string des = info.Name;
foreach (DescriptionAttribute attr in attrs)
{
des = attr.Description;
}
return des;
}
public static string GetDescriptioin(this Enum info)
{
Type enumType = info.GetType();
MemberInfo[] memberInfo = enumType.GetMembers();
foreach (MemberInfo member in memberInfo)
{
string enumName = member.Name;
if (enumName == info.ToString())
{
var attrs = member.GetCustomAttributes(typeof(DescriptionAttribute), false);
if (attrs.Length == 0) { return string.Empty; }
DescriptionAttribute attr = attrs[0] as DescriptionAttribute;
return attr.Description;
}
}
return string.Empty;
}
}
}