获取类级别的描述属性

时间:2010-05-19 08:12:17

标签: c# attributes

我有这样一个班级

[Description("This is a wahala class")]
public class Wahala
{

}

是否有获取Description类的Wahala属性的内容?

3 个答案:

答案 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

http://msdn.microsoft.com/en-us/library/bfwhbey7.aspx

答案 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