| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 801 人关注过本帖
标题:关于反射
只看楼主 加入收藏
ConfusingMan
Rank: 2
等 级:论坛游民
帖 子:5
专家分:10
注 册:2010-9-1
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:6 
关于反射
反射到底是怎么一回事,哪位大侠能指点一下,看了一些书,还是不明白怎么用?
搜索更多相关主题的帖子: 反射 
2010-10-07 18:56
gameohyes
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:湖南
等 级:版主
威 望:53
帖 子:1275
专家分:3629
注 册:2009-3-5
收藏
得分:0 
http://zhidao.baidu.com/question/22992329.html

C#超级群 74862681,欢迎大家的到来!
2010-10-07 21:59
c1_wangyf
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:7
帖 子:665
专家分:2832
注 册:2010-5-24
收藏
得分:0 
我这是把版主发出来的地址的内容拷贝过来,供大家一同学习,别无它意,同时也一起学习一下!!


反射(Reflection)是.NET中的重要机制,通过放射,可以在运行时获得.NET中每一个类型(包括类、结构、委托、接口和枚举等)的成员,包括方法、属性、事件,以及构造函数等。还可以获得每个成员的名称、限定符和参数等。有了反射,即可对每一个类型了如指掌。如果获得了构造函数的信息,即可直接创建对象,即使这个对象的类型在编译时还不知道。



 程序代码在编译后生成可执行的应用,我们首先要了解这种可执行应用程序的结构。

 应用程序结构分为应用程序域—程序集—模块—类型—成员几个层次,公共语言运行库加载器管理应用程序域,这种管理包括将每个程序集加载到相应的应用程序域以及控制每个程序集中类型层次结构的内存布局。

 程序集包含模块,而模块包含类型,类型又包含成员,反射则提供了封装程序集、模块和类型的对象。我们可以使用反射动态地创建类型的实例,将类型绑定到现有对象或从现有对象中获取类型,然后调用类型的方法或访问其字段和属性。反射通常具有以下用途。

 (1)使用Assembly定义和加载程序集,加载在程序集清单中列出模块,以及从此程序集中查找类型并创建该类型的实例。
 (2)使用Module了解包含模块的程序集以及模块中的类等,还可以获取在模块上定义的所有全局方法或其他特定的非全局方法。
 (3)使用ConstructorInfo了解构造函数的名称、参数、访问修饰符(如pulic 或private)和实现详细信息(如abstract或virtual)等。使用Type的GetConstructors或GetConstructor方法来调用特定的构造函数。
 (4)使用MethodInfo了解方法的名称、返回类型、参数、访问修饰符(如pulic 或private)和实现详细信息(如abstract或virtual)等。使用Type的GetMethods或GetMethod方法来调用特定的方法。
 (5)使用FiedInfo了解字段的名称、访问修饰符(如public或private)和实现详细信息(如static)等,并获取或设置字段值。
 (6)使用EventInfo了解事件的名称、事件处理程序数据类型、自定义属性、声明类型和反射类型等,添加或移除事件处理程序。
 (7)使用PropertyInfo了解属性的名称、数据类型、声明类型、反射类型和只读或可写状态等,获取或设置属性值。
 (8)使用ParameterInfo了解参数的名称、数据类型、是输入参数还是输出参数,以及参数在方法签名中的位置等。

 System.Reflection.Emit命名空间的类提供了一种特殊形式的反射,可以在运行时构造类型。
 反射也可用于创建称为类型浏览器的应用程序,使用户能够选择类型,然后查看有关选定类型的信息。
 此外,Jscript等语言编译器使用反射来构造符号表。System.Runtime.Serialization命名空间中的类使用反射来访问数据并确定要永久保存的字段,System.Runtime.Remoting命名空间中的类通过序列化来间接地使用反射。
2010-10-07 22:14
jedypjd
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:9
帖 子:1096
专家分:4969
注 册:2009-7-27
收藏
得分:5 
比如说你有一个类,你可以方便的实例化得到一个对象
反过来你有一个对象,你就要通过反射来得到这个类和类里的成员

天涯无岁月,歧路有风尘,百年浑似醉,是非一片云
2010-10-08 14:31
wangnannan
Rank: 18Rank: 18Rank: 18Rank: 18Rank: 18
等 级:贵宾
威 望:87
帖 子:2546
专家分:9359
注 册:2007-11-3
收藏
得分:0 
曾经用反射在页面查找过控件(例如很多radioButton) 呵呵 挺好用的

出来混,谁不都要拼命的嘛。 。拼不赢?那就看谁倒霉了。 。有机会也要看谁下手快,快的就能赢,慢。 。狗屎你都抢不到。 。还说什么拼命?
2010-10-08 16:13
冰点小爱
Rank: 2
来 自:吉林长春
等 级:论坛游民
帖 子:39
专家分:49
注 册:2010-3-2
收藏
得分:0 
还没有听过反射这个词呢。才学C#。
2010-10-08 21:19
ioriliao
Rank: 7Rank: 7Rank: 7
来 自:广东
等 级:贵宾
威 望:32
帖 子:2829
专家分:647
注 册:2006-11-30
收藏
得分:15 
反射就是相当于镜子可以映出像来。。。
下面是我以前写的关于反射的demo.
https://bbs.bccn.net/thread-229384-1-1.html
https://bbs.bccn.net/thread-229189-1-1.html

/images/2011/147787/2011051411021524.jpg" border="0" />
2010-10-10 10:23
快速回复:关于反射
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.024536 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved