通過反射獲取類上的Description標簽


在很多博客中都是通過反射獲取類中的屬性的Description及其他信息,但是如果需要獲取類上的Description標簽時可通過以下方法獲取。

var attrs = Attribute.GetCustomAttributes(entity.GetType());//獲取類本身屬性信息

在attrs中包含類的本身的信息,通過以下方法獲取描述信息:string.Format("類名為{0},描述為{1}的數據如下:", entity.GetType().Name, ((DescriptionAttribute)attrs[0]).Description);//獲取類名及描述

當需要獲取類中的屬性信息及字段值時可參考以下完整代碼:

/// <summary>
/// 通過反射獲取實體描述
/// </summary>
/// <param name="entity">實體</param>
/// <returns></returns>
public static string GetObjectDescription(object entity)
{
var attrs = Attribute.GetCustomAttributes(entity.GetType());//獲取類本身屬性信息
string tStr = string.Empty;
if (attrs.Length > 0)
{
tStr = string.Format("類名為{0},描述為{1}的數據如下:", entity.GetType().Name, ((DescriptionAttribute)attrs[0]).Description);//獲取類名及描述
}
if (entity == null)
{
return tStr;
}
System.Reflection.PropertyInfo[] properties = entity.GetType().GetProperties(System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.Public);//獲取類屬性list

if (properties.Length <= 0)
{
return tStr;
}
foreach (System.Reflection.PropertyInfo item in properties)
{
string name = item.Name; //名稱
object value = item.GetValue(entity, null); //值
string des = ((DescriptionAttribute)Attribute.GetCustomAttribute(item, typeof(DescriptionAttribute))).Description;// 屬性值

if (item.PropertyType.IsValueType || item.PropertyType.Name.StartsWith("String"))
{
tStr += string.Format("{0}數據為:{1},", des, value);
}
else
{
GetObjectDescription(value);
}
}
return tStr.TrimEnd(',') + "。";
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM