C# 反射获取 Metadata类,获取类的Attribute 属性
/// <summary>
/// 获取类的中文名
/// </summary>
/// <param name="dataType"></param>
/// <param name="fieldName"></param>
/// <returns></returns>
public static string GetDisplayName(Type dataType, string fieldName)
{
// First look into attributes on a type and it's parents
DisplayAttribute attr;
attr = (DisplayAttribute)dataType.GetProperty(fieldName).GetCustomAttributes(typeof(DisplayAttribute), true).SingleOrDefault();
if (attr == null)
{
return String.Empty;
}
else
return (attr != null) ? attr.GetName() : String.Empty;
}
/// <summary>
/// 获取类的Metadata中设置的Display中文名
/// 先取 类中的 Display然后去 Metadata类中的Display
/// </summary>
/// <param name="dataType"></param>
/// <param name="fieldName"></param>
/// <returns>有MetadataType取Metadata,没有取类中的</returns>
public static string GetMetaDataDisplayName(Type dataType, string fieldName)
{
// First look into attributes on a type and it's parents
DisplayAttribute attr = null;
attr = (DisplayAttribute)dataType.GetProperty(fieldName).GetCustomAttributes(typeof(DisplayAttribute), true).SingleOrDefault();
MetadataTypeAttribute metadataType = (MetadataTypeAttribute)dataType.GetCustomAttributes(typeof(MetadataTypeAttribute), true).FirstOrDefault();
if (metadataType != null)
{
var property = metadataType.MetadataClassType.GetProperty(fieldName);
if (property != null)
{
attr = (DisplayAttribute)property.GetCustomAttributes(typeof(DisplayAttribute), true).SingleOrDefault();
}
}
return (attr != null) ? attr.Name : String.Empty;
}