设为首页  
联系我们  
加入收藏  
网页制作 冲浪宝典 图形图像 操作系统 软件教学 编程开发 认证考试 安全技术 站长专区 文学驿站 娱乐天地 游戏天地 办公软件
文章搜索
您的位置: 首页 >> 文章首页 >> 编程开发 >> 网络编程 >> .net >> Attribute 在.NET编程中的应用(二)
精品推荐
.net点击TOP10
·我的.NET书架 (入门篇)
·.NET:是什么?将走向哪里?
·.NET 初 级 读 本
·在ASP.NET中把图片保存到SQL SERVER数据库
·从零开始学ASP.NET(基础篇)
·DataGrid导成Excel的例子
·ASP.Net Web Page深入探讨(一)
·CHK文件恢复工具
·.NET编程规范
·.NET Petshop详解(三):petshop三层结构之MiddleTire
网络编程点击TOP10
·ASP.NET 程序中常用的三十三种代码
·利用ASP.NET构建网上考试系统
·C#版的网站新闻发布系统
·设计ASP.NET新闻管理系统
·我的.NET书架 (入门篇)
·用ASP.NET和XML做的新闻系统
·.NET:是什么?将走向哪里?
·.NET 初 级 读 本
·十天学会ASP.net之第一天
·用C#实现木马程序
精选专题

Attribute 在.NET编程中的应用(二)

作者: 来源:网络文章 时间:2005-12-13 21:06:24

Attribute 在.NET编程中的应用(二)(1)

Attribute在.net编程中的应用(二)

.net Framework中对Attribute的支持是一个全新的功能,这种支持来自它的Attribute类。在你的程序中适当地使用这个类,或者是灵活巧妙地利用这个类,将使你的程序获得某种在以往编程中很难做到的能力。我们来看一个例子:
假如你是一个项目开发小组中的成员,你想要跟踪项目代码检查的信息,通常你可以把代码的检查信息保存在数据库中以便查询;或者把信息写到代码的注释里面,这样可以阅读代码的同时看到代码被检查的信息。我们知道.net的组件是自描述的,那么是否可以让代码自己来描述它被检查的信息呢?这样我们既可以将信息和代码保存在一起,又可以通过代码的自我描述得到信息。答案就是使用Attribute.
下面的步骤和代码告诉你怎么做:
首先,我们创建一个自定义的Attribute,并且事先设定我们的Attribute将施加在class的元素上面以获取一个类代码的检查信息。

using System;using System.Reflection; [AttributeUsage(AttributeTargets.Class)] //还记得上一节的内容吗?public class CodeReviewAttribute : System.Attribute //定义一个CodeReview的Attribute{ private string reviewer;//代码检查人 private string date;//检查日期 private string comment;//检查结果信息 //参数构造器 public CodeReviewAttribute(string reviewer, string date) {this.reviewer=reviewer;this.date=date; } public string Reviewer {get{return reviewer;} } public string Date {get{return date;} } public string Comment {get{return comment;}set{comment=value;} }}

我们的自定义CodeReviewAttribute同普通的类没有区别,它从Attribute派生,同时通过AttributeUsage表示我们的Attribute仅可以施加到类元素上。

第二步就是使用我们的CodeReviewAttribute, 假如我们有一个Jack写的类MyClass,检查人Niwalker,检查日期2003年7月9日,于是我们施加Attribute如下:

[CodeReview("Niwalker","2003-7-9",Comment="Jack的代码")]public class MyClass{ //类的成员定义} 

当这段代码被编译的时候,编译器会调用CodeReviewAttribute的构造器并且把"Niwalker"和"2003-7-9"分别作为构造器的参数。注意到参数表中还有一个Comment属性的赋值,这是Attribute特有的方式,这里你可以设置更多的Attribute的公共属性(如果有的话),需要指出的是.net Framework1.0允许向private的属性赋值,但在.net Framework1.1已经不允许这样做,只能向public的属性赋值。

第三步就是取出我们需要的信息,这是通过.net的反射来实现的,关于反射的知识,限于篇幅我不打算在这里进行说明,也许我会在以后另外写一篇介绍反射的文章。

class test{static void Main(string[] args){System.Reflection.MemberInfo info=typeof(MyClass); //通过反射得到MyClass类的信息//得到施加在MyClass类上的定制Attribute CodeReviewAttribute att=(CodeReviewAttribute)Attribute.GetCustomAttribute(info,typeof(CodeReviewAttribute)); if(att!=null){ Console.WriteLine("代码检查人:{0}",att.Reviewer); Console.WriteLine("检查时间:{0}",att.Date); Console.WriteLine("注释:{0}",att.Comment);}}}
在上面这个例子中,Attribute扮演着向一个类添加额外信息的角色,它并不影响MyClass类的行为。通过这个例子,我们大致可以知道如何写一个自定义的Attribute,以及如何在应用程序使用它。下一节,我将介绍如何使用Attribute来自动生成ADO.net的数据访问类的代码。
共2页 9 7 [1] [28 :>

Attribute 在.NET编程中的应用(二) 相关文章:
Attribute 在.NET编程中的应用(二) 相关软件:
特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
转载请注明来源:http://www.xgdown.com