.NET中反射机制的使用与分析
来源:互联网 发布:seo公司usseo 编辑:程序博客网 时间:2024/05/16 17:19
元数据以非特定语言的方式描述在代码中定义的每一类型和成员。元数据存储以下信息:
.NET反射的概述:
应用程序结构分为应用程序域—程序集—模块—类型—成员几个层次,公共语言运行库加载器管理应用程序域。
这些域在拥有相同应用程序范围的对象周围形成了确定边界。
这种管理包括将每个程序集加载到相应的应用程序域以及控制每个程序集中类型层次结构的内存布局。
程序集包含模块,而模块包含类型,类型又包含成员,反射则提供了封装程序集、模块和类型的对象。
我们可以使用反射动态地创建类型的实例,将类型绑定到现有对象或从现有对象中获取类型,然后调用类型的方法或访问其字段和属性。反射通常具有以下用途:
System.Reflection.Emit命名空间的类提供了一种特殊形式的反射,可以在运行时构造类型。
反射也可用于创建称为类型浏览器的应用程序,使用户能够选择类型,然后查看有关选定类型的信息。
此外,Jscript等语言编译器使用反射来构造符号表。System.Runtime.Serialization命名空间中的类使用反射来访问数据并确定要永久保存的字段,System.Runtime.Remoting命名空间中的类通过序列化来间接地使用反射。
反射的性能:
使用反射来调用类型或者触发方法,或者访问一个字段或者属性时clr 需 要做更多的工作:校验参数,检查权限等等,所以速度是非常慢的。
所以尽量不要使用反射进行编程,对于打算编写一个动态构造类型(晚绑定)的应用程序,可以采取以下的几种方式进行代替:
提高反射的性能:反射的性能损失主要来源于比较类型、遍历成员、调用成员三种情形,其中比较类型耗时最小。
调用成员耗时最多,所以尽量减少采用成员动态调用等反射方式可以提高应用程序性能。除此之外,采取后期绑定、避免将反射方法放到循环内产生放大效应等办法均可提升反射性能。
示例如下:这是一个Calculator.dll
下面是通过反射检查和调用Calculator.dll中的的方法:
下面是运行出来的效果:
来源:http://www.cnblogs.com/focusonnet/archive/2009/04/17/1438013.html
- .NET中反射机制的使用与分析
- .NET中反射机制的使用与分析
- 黑马笔记-.NET中反射机制的使用与分析
- .NET中反射机制的使用与分析
- .NET中反射机制的使用
- .net中的反射机制的使用
- .NET中反射的使用
- .NET中反射的使用
- .net的反射机制
- .Net的反射机制
- .net的反射机制
- Java反射机制的基本概念与使用
- C#中反射机制的使用
- Kotlin中反射机制的使用语法
- 在.NET中使用反射实现简易插件机制
- 反射机制的使用
- .net中使用反射的简单例子
- .net中使用反射的简单例子
- Oracle 表空间
- UML的初步了解
- Ubuntu下锐捷linux客户端开机自启动的方法
- UML图(三)类图
- projecteuler No.121 Disc game prize fund
- .NET中反射机制的使用与分析
- 如何获取经纬度之间两点间真实距离(适用于GoogleMap,BaiduMap,Amap等)
- 记录,方便以后查询rtl8881a,ecos,cmj-1
- 2014-02-17
- IOS, xib和storyboard的混用
- android异常:The constructor Data() is undefined
- word模板文件损坏批处理
- 一个小学奥数题的python实现(全排列,字符串循环移位,统计元素)
- 如何用CSS让文字居于div的底部