C#反射的学习笔记(简单的学习笔记,大大们多指点啊)

首先了解反射
在学习反射之前应该大概的了解一下.net程序的编译过程,首先我们编写的代码会被编译器编译为程序集这其中包括中间件语言和元数据,
然后当我们使用程序集的时候,程序集会被编译成cpu可以识别的机器语言在机器上运行。
反射所作的就是动态的获取元数据中的信息,供程序查询和使用。
反射可以获取以下.Net程序所包含的部分的信息:
程序集(Assembly)’、‘模块(Module)’、‘类型(class)’
再来看看反射的作用
 1. 可以使用反射动态地创建类型的实例,将类型绑定到现有对象,或从现 有对象中获取类型 
 
 2. 应用程序需要在运行时从某个特定的程序集中载入一个特定的类型,以便实现某个任务时可以用到反射。 
 
 3. 反射主要应用与类库,这些类库需要知道一个类型的定义,以便提供更多的功能。 
反射的使用注意
1. 现实应用程序中很少有应用程序需要使用反射类型 
 
 2. 使用反射动态绑定需要牺牲性能 
       因为使用反射来调用类型或者触发方法,或者访问一个字段或者属性时clr 需 要做更多的工作:校验参数,检查权限等等,所以速度是非常慢的。
 
 3. 有些元数据信息是不能通过反射获取的 
 
 4. 某些反射类型是专门为那些clr 开发编译器的开发使用的,所以你要意识到不是所有的反射类型都是适合每个人的。 
使用反射到的主要的类
Assembly类 可以获得正在运行的装配件信息,也可以动态的加载装配件,以及在装配件中查找类型信息,并创建该类型的实例。
Type类 可以获得对象的类型信息,此信息包含对象的所有要素:方法、构造器、属性等等,通过Type类可以得到这些要素的信息,并且调用之。
MethodInfo 包含方法的信息,通过这个类可以得到方法的名称、参数、返回值等,并且可以调用之。
诸如此类,还有FieldInfo、EventInfo等等,这些类都包含在System.Reflection命名空间下。
以上这些类的属性和方法在MSDN中都有详解的介绍,这里就不陈述了。

反射解惑
反射是为了更好的让程序运行和方便程序员使用而产生的一个方法,不要刻意去问什么是反射,而是要知道为什么要用反射,反射给我们带来了什么好处。同样,编程语言和IDE,SDK等都是为程序员服务的工具,他们只是为了写出更好的程序而服务的工具,作为程序员不要被他们所束缚或者驾驭才是。
对于初学者,C#语言中有很多不能立刻理解的地方,例如泛型,反射,委托和事件,Attribute等,这些概念很抽象,这时不要死扣概念,应该把使用的方法等记录下来,等在实践应用的过程中再去体会理解。

转载于:https://www.cnblogs.com/Helling/archive/2009/09/22/1571682.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值