100165364.htm
来自「C#高级编程(第三版),顶死你们。。 。up」· HTM 代码 · 共 82 行
HTM
82 行
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><title>
10.1 定制特性
</title></head>
<body>
<div class="area">
<div class="col1">
<div class="lineBlue">
</div>
<!-- title -->
<div class="arcTitle">
<h1>
<a href="../16">
C#高级编程(第3版)【全文连载】
</a>
</h1>
<div style="text-align: center; font-size: 15px">
<a href="100165364.htm">
10.1 定制特性
</a>
</div>
<div style="text-align: center; font-size: 15px">
<a class="url" href="../../default.htm">http://book.csdn.net/</a>
2006-10-13 14:41:00
</div>
<div style="margin: 0px auto; width: 700px; border: solid 1px #0b5f98;">
<div style="float: left; width: 16px; background-color: #0b5f98; color: White; padding: 1px;">
图书导读
</div>
<div style="float: right; width: 670px; text-align: left; line-height: 16pt; padding-left: 2px">
<!--导读-->
<h1 id="divCurrentNode" style="color: #b83507; width: 100%; text-align: left; font-size: 12px; padding-left: 2px">当前章节:<a href='100165364.htm'><font color='red'>10.1 定制特性</font></a></h1>
<div id="divRelateNode" style="padding-left: 2px">
<div style='float:left;width:49%'>·<a href='100165361.htm'>9.1.3 字典(1)</a></div><div style='float:right;width:49%'>·<a href='100165362.htm'>9.1.3 字典(2)</a></div><div style='float:left;width:49%'>·<a href='100165363.htm'>9.2 小结</a></div><div style='float:right;width:49%'>·<a href='100165365.htm'>10.1.1 编写定制特性</a></div><div style='float:left;width:49%'>·<a href='100165366.htm'>10.1.2 定制特性示例WhatsNewAttributes</a></div><div style='float:right;width:49%'>·<a href='100165367.htm'>10.2 反射</a></div></div>
</div>
</div>
</div>
<!-- main -->
<div id="main">
<div id="text"> <link href="css.css" rel="stylesheet" type="text/css" /><p class="MsoNormal"><a ftel="baseclasses"></a><a ftel="customattributes"><span style="FONT-FAMILY: 宋体">反射是一个普通术语,描述了在运行过程中检查和处理程序元素的功能。例如,反射允许完成以下任务:</span></a></p>
<p class="1" style="MARGIN-LEFT: 37.55pt; FTEL: -16.1pt"><span lang="EN-US">●<span style="FONT: 7pt "Times New Roman""> </span></span><span style="FONT-FAMILY: 宋体">枚举类型的成员</span></p>
<p class="1" style="MARGIN-LEFT: 37.55pt; FTEL: -16.1pt"><span lang="EN-US">●<span style="FONT: 7pt "Times New Roman""> </span></span><span style="FONT-FAMILY: 宋体">实例化新对象</span></p>
<p class="1" style="MARGIN-LEFT: 37.55pt; FTEL: -16.1pt"><span lang="EN-US">●<span style="FONT: 7pt "Times New Roman""> </span></span><span style="FONT-FAMILY: 宋体">执行对象的成员</span></p>
<p class="1" style="MARGIN-LEFT: 37.55pt; FTEL: -16.1pt"><span lang="EN-US">●<span style="FONT: 7pt "Times New Roman""> </span></span><span style="FONT-FAMILY: 宋体">查找类型的信息</span></p>
<p class="1" style="MARGIN-LEFT: 37.55pt; FTEL: -16.1pt"><span lang="EN-US">●<span style="FONT: 7pt "Times New Roman""> </span></span><span style="FONT-FAMILY: 宋体">查找程序集的信息</span></p>
<p class="1" style="MARGIN-LEFT: 37.55pt; FTEL: -16.1pt"><span lang="EN-US">●<span style="FONT: 7pt "Times New Roman""> </span></span><span style="FONT-FAMILY: 宋体">检查应用于类型的定制特性</span></p>
<p class="1" style="MARGIN-LEFT: 37.55pt; FTEL: -16.1pt"><span lang="EN-US">●<span style="FONT: 7pt "Times New Roman""> </span></span><span style="FONT-FAMILY: 宋体">创建和编译新程序集</span></p>
<p class="MsoNormal"><span style="FONT-FAMILY: 宋体">这个列表列出了许多功能,包括</span><span lang="EN-US">.NET Framework</span><span style="FONT-FAMILY: 宋体">类库提供的一些最强大、最复杂的功能。但本章不可能介绍反射的所有功能,仅讨论最常用的功能。</span></p>
<p class="MsoNormal"><span style="FONT-FAMILY: 宋体">首先讨论定制特性,定制特性允许把定制的元数据与程序元素关联起来。这些元数据是在编译过程中创建的,并嵌入到程序集中。接着就可以在运行期间使用反射的一些功能检查这些元数据了。</span></p>
<p class="MsoNormal"><span style="FONT-FAMILY: 宋体">在介绍了定制特性后,将探讨支持反射的一些基类,包括</span><span lang="EN-US">System.Type</span><span style="FONT-FAMILY: 宋体">和</span><span lang="EN-US">System.Reflection.Assembly</span><span style="FONT-FAMILY: 宋体">类,它们可以访问利用反射能完成的许多任务。</span></p>
<p class="MsoNormal"><span style="FONT-FAMILY: 宋体">为了演示定制特性和反射,我们将开发一个示例,说明公司如何定期升级软件,自动解释升级的信息。在这个示例中,要定义几个定制特性,表示程序元素最后修改或创建的日期,以及发生了什么变化。然后使用反射开发一个应用程序,在程序集中查找这些特性,自动显示软件自某个给定日期以来升级的所有信息。</span></p>
<p class="MsoNormal"><span style="FONT-FAMILY: 宋体">要讨论的另一个示例是一个应用程序,该程序读写数据库,并使用定制特性,把类和特性标记为对应的数据库表和列。然后在运行时从程序集中读取这些特性,使程序可以自动从数据库的相应位置检索或写入数据,无需为每个表或列编写特定的逻辑。</span></p>
<h3 style="MARGIN-TOP: 11.4pt; MARGIN-LEFT: 0cm; MARGIN-RIGHT: 0cm; FTEL: 11.4pt"><span lang="EN-US">10.1 </span><span style="FONT-FAMILY: 楷体_GB2312">定制特性</span></h3>
<p class="MsoNormal"><span style="FONT-FAMILY: 宋体">前面介绍了如何在程序的各个数据项上定义特性。这些特性都是</span><span lang="EN-US">Microsoft</span><span style="FONT-FAMILY: 宋体">定义好的,作为</span><span lang="EN-US">.NET Framework</span><span style="FONT-FAMILY: 宋体">类库的一部分,许多特性都得到了</span><span lang="EN-US">C#</span><span style="FONT-FAMILY: 宋体">编译器的支持。对于这些特殊的特性,编译器可以以特殊的方式定制编译过程,例如,可以根据</span><span lang="EN-US">StructLayout</span><span style="FONT-FAMILY: 宋体">特性中的信息来布局内存中的结构。</span></p>
<p class="MsoNormal"><span lang="EN-US">.NET Framework</span><span style="FONT-FAMILY: 宋体">也允许用户定义自己的特性。显然,这些特性不会影响编译过程,因为编译器不能识别它们,但这些特性在应用于程序元素时,可以在编译好的程序集中用作元数据。这些元数据在文档说明中非常有用。但是,使定制特性非常强大的因素是使用反射,代码可以读取这些元数据,使用它们在运行期间作出决策,也就是说,定制特性可以直接影响代码运行的方式。</span></p></div>
<!-- page -->
<div class="page" style="text-align: center">
<a href="100165363.htm">上一页</a> <a href="index.html">首页</a> <a href="100165365.htm">下一页</a>
</div>
<div style="margin: 0px auto; width: 700px; border: solid 1px #0b5f98;">
<div style="float: left; width: 16px; background-color: #0b5f98; color: White; padding: 1px;">
图书导读
</div>
<div style="float: right; width: 670px; text-align: left; line-height: 16pt; padding-left: 2px">
<!--导读-->
<h1 id="divCurrentNode2" style="color: #b83507; width: 100%; text-align: left; font-size: 12px; padding-left: 2px">当前章节:<a href='100165364.htm'><font color='red'>10.1 定制特性</font></a></h1>
<div id="divRealteNod2" style="padding-left: 2px">
<div style='float:left;width:49%'>·<a href='100165361.htm'>9.1.3 字典(1)</a></div><div style='float:right;width:49%'>·<a href='100165362.htm'>9.1.3 字典(2)</a></div><div style='float:left;width:49%'>·<a href='100165363.htm'>9.2 小结</a></div><div style='float:right;width:49%'>·<a href='100165365.htm'>10.1.1 编写定制特性</a></div><div style='float:left;width:49%'>·<a href='100165366.htm'>10.1.2 定制特性示例WhatsNewAttributes</a></div><div style='float:right;width:49%'>·<a href='100165367.htm'>10.2 反射</a></div></div>
</div>
</div>
</div>
</div>
</body>
</html>
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?