注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

Lucifer 的博客

网易英超评论专栏

 
 
 

日志

 
 
 
 

自定义Attribute的应用  

2007-12-29 11:13:43|  分类: 默认分类 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

在自定义Attribute的时候可在它的构造函数里面添加一些操作,比如说权限信息的检查等等,然后再调用这个Attribute的时候调用这些操作,但是在实际的使用中,自定义Attribute的构造函数是如何被调用的呢?

 

自定义的Attribute可以构造函数的,可以在它构造的时候做些其他的事情。

下面是一个简单得sample:

 

using System;

 

namespace ConsoleApplication1

{

    // 自定义Attribute

    [AttributeUsage(AttributeTargets.Class, AllowMultiple = false, Inherited = false)]

    public class HelpAttribute : Attribute

    {

        public HelpAttribute()

        {

            // test

            this.description = "颜色是红的";

 

            // 可以在下面添加权限信息的检查

        }

        protected String description;

        public String Description

        {

            get

            {

                return this.description;

 

            }

        }

    }

 

    // 应用自定义Attribute

    [Help()]

    public class AnyClass

    {

        private string _color;

        public AnyClass(string color) { _color = color; }

        public string Color

        {

            get { return _color; }

        }

 

    }

 

    class Program

    {

        static void Main(string[] args)

        {

            AnyClass a = new AnyClass("red");

            Console.WriteLine("the color is{0} ", a.Color);

 

            // 查询自定义Attribute信息

            Type type = a.GetType();

            foreach (Attribute attr in Attribute.GetCustomAttributes(type))

            {

                if (attr.GetType() == typeof(HelpAttribute))

                    Console.WriteLine("the info of atrribute {0}", ((HelpAttribute)attr).Description);

            }

 

        }      

 

    }

}

 

在本sample中自定义了HelpAttribute用来添加中文的附加信息然后把它应用到了AnyClass这个类上。在实际的测试中通过Type type = typeof(AnyClass)得到了一个与我们 Any Class 类相关联的Type型对象Attribute.GetCustomAttributes(type)取出施加在这个对象上所有的Attribute这个时候就会调用相关Attribute的构造函数)。然后对他们进行遍历,取得我们自定义的HelpAttribute,输出相关的信息。

构造函数是在Attribute.GetCustomAttributes(type)时候调用的。

程序运行结果:10

自定义Attribute的应用 - Lucifer - Lucifer 的博客
  评论这张
 
阅读(516)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017