using HStation.RevitDev.Model.ModelEnum;
|
using System;
|
using System.ComponentModel;
|
using System.Reflection;
|
|
|
namespace HStation.RevitDev.RevitDataExport.Common
|
{
|
/// <summary>
|
/// 描述特性的读取扩展类
|
/// </summary>
|
public static class DescriptionExtension
|
{
|
/// <summary>
|
/// 获取枚举的描述信息
|
/// </summary>
|
public static string GetDescription(this RevitType em)
|
{
|
Type type = em.GetType();
|
FieldInfo fd = type.GetField(em.ToString());
|
string des = fd.GetDescription();
|
return des;
|
}
|
|
|
|
/// <summary>
|
/// 获取属性的描述信息
|
/// </summary>
|
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;
|
}
|
|
|
|
/// <summary>
|
/// 获取属性的描述信息
|
/// </summary>
|
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;
|
}
|
}
|
}
|