您的位置:首页 > 编程语言 > C#

C# 特性学习(二)

2014-06-07 17:47 253 查看
自定义了一个特性类:

   
[AttributeUsage(AttributeTargets.Class|AttributeTargets.Method)]

    class
WahAttribute:System.Attribute

    {

       
private string description;

       
public string Description

       
{

           
get { return description; }

           
set { description = value; }

       
}

       
private string author;

       
public string Author

       
{

           
get { return author; }

           
set { author = value; }

       
}

       
public WahAttribute(string desc)

       
{

           
this.description = desc;

       
}

    }

运用特性类:

namespace attributeDemo

{

    public class
Teacher

    {

       
private string name;

       
public string Name

       
{

           
get { return name; }

           
set { name = value; }

       
}

       
private int age;

       
public int Age

       
{

           
get { return age; }

           
set { age = value; }

       
}

       
private string sex;

       
public string Sex

       
{

           
get { return sex; }

           
set { sex = value; }

       
}

       
//只有用户名为wah的才可以调用此方法

       
[Wah("this is my attribute test", Author = "wah", Description =
"test")]

       
public string getMessage()

       
{

           
return "好好学习,天天向上";

       
}

       
[Wah("this is with parameters
test",Author="wanggaihui",Description="test with
parameters")]

       
public int Test(int a,int b)

       
{

           
return a+b;

       
}

    }

}

处理特性类:

       
private void button_Click(object sender, EventArgs e)

       
{

           
//得到类型

           
Type type = typeof(Teacher);

           
//得到此类型所有方法

           
MethodInfo[] methods = type.GetMethods();

           
foreach (MethodInfo method in methods)

           
{

               
//得到此方法的所有特性

               
object[] attributes = method.GetCustomAttributes(false);

               
foreach (object o in attributes)

               
{

                   
//判断是否是自己定义的特性

                   
if (o.GetType() == typeof(WahAttribute))

                   
{

                       
//强转取得值

                       
WahAttribute waha = (WahAttribute)o;

       
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: