反射是日常编码中不可或缺的重要特性但是大规模应用又会造成性能问题,因此很多人都写了提升反射速度的辅助类库。在.net1.1时代主要应用Emit自己构造IL,这需要你精通IL而且还不能怕麻烦。而在.net2.0时代由于引入了泛型使我们可以利用泛型委托来减少一部分IL Emit过程,但是泛型是编译时确定的而我们更多的应用是在运行时得到或设置对象的属性,及动态执行方法。好在.net2.0又新增了一个辅助类DynamicMethod来帮助我们进行Emit编程。如今.net3.5了微软又给了我们更强大的武器Expression Tree,利用它我们就可以避免使用复杂的IL而可以从更抽象更高级的角度来动态Emit我们需要的东西。是不是觉得.net发展越来越人性化呢易用话呢?就在我写这篇文章的时候c#4.0的duck type估计已经出炉了,到时候Emit这技术也没多大用了完全都是微软替们我们搞定了(虽然编程的门槛降低了程序员越来越多了但我相信这些底层技术还是很有必要学习的,因为底层技术是一种解决问题的思路就像算法)。阅读全文>
发表于 @ 2008年09月21日 23:05:00|评论(loading...)|举报|收藏