Emit基本概念介绍
来源:互联网 发布:java 反射获取运行时 编辑:程序博客网 时间:2024/06/09 14:27
对Emit、AOP感兴趣很久了,最近终于有时间研究一下,所以就开始学习,网上还是高人多(尤其是在2010年之前就混IT界的),查了一些资料对Emit也算是了解了一点点,总结下来跟大家分享一下。
什么是反射发出(Reflection Emit)
说到反射大家应该都不陌生,反射是在运行时发现对象的相关信息,并且执行这些对象(创建对象实例,执行对象中的方法),简单地说反射不仅允许你浏览一个程序集暴露的类、方法、属性、字段,而且允许你创建一个类型的实例以及执行实例中的方法(调用成员)。但.NET的反射机制并没有到此结束,反射还允许你在运行时构建一个程序集,并且可以创建全新的类型,这就是反射发出(Reflection Emit),Emit应该是反射中一个比较高级的功能。
使用Emit可以从零开始,动态的构造程序集和类型,在需要时动态生成代码,提高程序的灵活性。有了这些功能,我们可以用其来实现一些典型的应用:
- 动态代理(AOP)
- 减少反射的性能损失(Dynamic Method等)
- ORM的实现
- 工具及IDE插件的开发
- 公共代码安全模块开发
使用Emit的完整流程
使用Emit一般包括以下步骤:
1) 创建一个新的程序集(可以选择存在内存中或持久化到硬盘)
2) 在程序集内创建一个模块
3) 在模块内创建动态类
4) 在动态类中添加动态方法、属性、事件等
5) 生产相关的IL代码
6) 返回创建出来的类型或持久化到硬盘
如果只是想创建一个Dynamic Method那么可以直接使用DynamicMethod类来创建动态方法,并在构造函数时传入它所依附的类或者模块。看了这个流程相信大家对使用Emit来创建动态类型的过程有了一个简单的认识,下面将通过实践来深入理解这一过程。
1 0
- Emit基本概念介绍
- 三层开发基本概念介绍
- 三层开发基本概念介绍
- UNIX基本概念介绍
- 三层开发基本概念介绍
- James基本概念介绍
- STAF基本概念介绍
- 音频编码基本概念介绍
- OpenGL ES基本概念介绍
- 音频编码基本概念介绍
- OpenGL ES基本概念介绍
- ION基本概念介绍
- IPtables之一:基本概念介绍
- ION基本概念介绍
- 路由的基本概念介绍
- OpenGL ES基本概念介绍
- AngularJS中的基本概念介绍
- 100301- ZooKeeper 基本概念介绍
- iOS苹果开发者账号申请流程
- 铺砖问题
- Mini Parser
- Https 是如何工作的?
- HTTP协议的论述
- Emit基本概念介绍
- 设计模式(4)------单态模式
- Android基础控件之SeekBar(拖动条)
- linux 安装tomcat
- 一、静态网页的实现 1.运用CSS,让导航菜单在右侧绝对定位显示。 2.运用锚点,实现导航定位。
- hdu 5889 Barricade
- xss 你懂的
- TuioDemo程序二刷
- linux菜鸟安装Ubuntu14.04系统配置php环境(一)