Spring系列(1)--创建动态代理类

象DotNet,Java之类的语言能够进行动态代理类的创建,得益于其本身并不是直接编译成机器代码,而是编译成中间语言,在运行时才解释或动态编译成目标机器语言。这也是为什么这些概念先在Java兴起的根本原因。产生动态代理类,一般都是利用Emit命名空间的指令,但这个对IL的要求比较高,我这里利用C#提供的动态编译功能实现,

优点是直观,容易理解,不用熟悉IL指令,缺点当然是显得不怎么专业。

(网上很多利用Emit,IL指令构建动态代理类的代码)

能够动态代理(我更倾向于用装饰),一个很关键的地方就是要求你的类中需要被监视(hook)的成员至少是保


护的虚方法.

下面就是动态代理类的工厂类,这里先介绍这个类,后面的博文会解释为什么要这么做:

//代理类工厂,简单的工厂方法.


后记:有些东西看起来很神秘,但实际上也不过如此。国内没法做出好的框架,其实一个主要的原因就是编译技术不过关,没有自己的语言。如果Emit和动态编译命名空间的方法不公开,就很难做了.

你可能感兴趣的:(spring)