通过反射获取类上的Description标签

(41) 2023-10-13 12:12

Hi,大家好,我是编程小6,很荣幸遇见你,我把这些年在开发过程中遇到的问题或想法写出来,今天说一说通过反射获取类上的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(',') + "。";

}

今天的分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。

上一篇

已是最后文章

下一篇

已是最新文章

发表回复