我有这样一个班级
[Description("This is a wahala class")]
public class Wahala
{
}
是否有获取Description
类的Wahala
属性的内容?
答案 0 :(得分:32)
绝对 - 使用Type.GetCustomAttributes
。示例代码:
using System;
using System.ComponentModel;
[Description("This is a wahala class")]
public class Wahala
{
}
public class Test
{
static void Main()
{
Console.WriteLine(GetDescription(typeof(Wahala)));
}
static string GetDescription(Type type)
{
var descriptions = (DescriptionAttribute[])
type.GetCustomAttributes(typeof(DescriptionAttribute), false);
if (descriptions.Length == 0)
{
return null;
}
return descriptions[0].Description;
}
}
相同类型的代码可以检索其他成员的描述,例如字段,属性等。
答案 1 :(得分:3)
使用reflection和Attribute.GetCustomAttributes
答案 2 :(得分:2)
您可以使用反射来读取属性数据:
System.Reflection.MemberInfo inf = typeof(Wahala);
object[] attributes;
attributes =
inf.GetCustomAttributes(
typeof(DescriptionAttribute), false);
foreach(Object attribute in attributes)
{
DescriptionAttribute da = (DescriptionAttribute)attribute;
Console.WriteLine("Description: {0}", da.Description);
}
改编自here。