Emit学习之旅(1):Emit概览
来源:互联网 发布:php开源点餐系统 编辑:程序博客网 时间:2024/06/06 09:52
一、Emit概述
Emit,可以称为发出或者产生。在Framework中,与Emit相关的类基本都存在于System.Reflection.Emit命名空间下。可见Emit是作为反射的一个元素存在的。说道反射,大家应该都不陌生,它允许我们查看程序集的元素据,从而取得形如程序集包含哪些类型,类型包含哪些方法等等大量的信息。但是反射也仅能够‘看’,而Emit则可以在运行时动态生成代码。接下来就来看看如何用Emit生成代码。
二、动态生成代码
首先需要明确的是这里的代码并不是我们时常提到的C#,VB等源代码,而是IL代码。既然是IL代码,那学习Emit是不是要先对IL很熟悉呢?诚然,熟悉IL代码对Emit学习会大有帮助,但是不懂也没关系,因为IL和高级语言一样,也是有一些相对固定的语法结构组成,不可能在一个IL程序里表述if是一个样子而到另一个程序却变成了另一个样子。所以只要多用,多记,很快就能掌握这些东西。
其次如C#,VB等程序会包含程序集,模块,类,方法,属性等元素一样,Emit生成的代码也包括这些元素。以下介绍Emit生成代码的基本流程:
1.构建程序集
在创建程序集之前,我们先要为它取个名字。
- Emit学习之旅(1):Emit概览
- Emit学习(1)-Emit概览
- Emit 学习之旅(1) ----Emit 概述
- vue组件之emit
- C# Emit 技术(1)
- Reflection.Emit使用(1)
- Emit学习之旅(2):创建常见元素—基础部分
- AngularJS学习之路--- $on、$emit和$broadcast的使用
- Vue事件解读之$emit
- emit 指令
- vue $emit
- AngularJS的学习--$on、$emit和$broadcast
- IL,Emit之OpCodes说明(备查)
- QT之emit,signals和slots
- vue之$emit和$on简单测试
- vue.js之$emit和$on
- Reflection Part 2: Emit
- 反射发出--Emit
- C++中的const
- Cannot create type class java.io.File from value
- Emit学习之旅(2):创建常见元素—基础部分
- 使用CLR Profiler监控.NET应用性能
- 一些新笔记本安装XP会蓝屏的解决办法
- Emit学习之旅(1):Emit概览
- .net 使用SqlBulkCopy极速插入数据到 SQL Server----柳永法http://www.yongfa365.com/Item/SqlBulkCopy.html
- Android 用SlidingDrawer实现抽屉效果
- Java类集 _SortedMap接口
- 判断数组是否包含某个元素的js函数
- 学习密度和专注力
- 强连通分量与双连通分量
- 使用亚马逊邮件服务
- 投放Facebook广告的五大诀窍