利用RunSharp替代Reflaction.Emit进行IL处理

 

        IL语言作为中间层的汇编语言,实在是有点晦涩难懂,但是很多时候在一些需要动态代码生成和执行的场合,又需要IL的支持,一是其效率高效,二是解决了高级编程语言反射处理,只能枚举读取,而无法构建的过程,即使实现了构建,也是按字符串拼接的构建,完全失去了语言的美感。

       源码地址:http://www.codeproject.com/Articles/20921/RunSharp-Reflection-Emit-Has-Never-Been-Easier

       相比于完全的字符串拼接过程,此处的处理已经有明显的改善了,但是有些地方对Reflaction.Emit的解释并不是太到位。

       具体效率还没有做出比较。

       但是如果想利用IL的高效性,建议还是用Emit,开源社区是伟大的,在CodePlex上早有人贡献出了专门的插件http://reflectoraddins.codeplex.com/SourceControl/latest

这个插件最大的优势在于,可以将IL语言在高级语言之间转化,也就是我们可以在不懂IL语言的基础上,先利用高级语言实现某些函数算法,再翻译到IL,可以实现动态的嵌入。

      IL语言在进行框架设计时,绝对是一大利器,尤其是在一些过程反转或横切编程方面,可以降低反射带来的低效率和高级语言下对方法拦截和堆栈调用的别扭之处。因为其犀利,因此也带来了难于理解的副作用,但在我的认知角度,其难于理解,在堆栈构建或内存散列等角度的难理解是主要的,而语言自身的晦涩还是容易攻克的。不能为了高效性,一不小心造成了内存泄漏或溢出的不稳定性,毕竟一些对虚拟寄存器的累加移位运算的资料还是太少。

你可能感兴趣的:(利用RunSharp替代Reflaction.Emit进行IL处理)