AOP,我们一般称为面向方面(切面)编程,作为面向对象的一种补充,用于处理系统中分布于各个模块的横切关注点,比如事务管理、日志、缓存等等。如果不采用AOP技术,也是最简单的,所有方法体第一句话先调用一个日志接口将方法信息传递记录。我们既然要将Log当作一个切面,我们肯定不能去动原有的业务代码,那样也违反了面向对象设计之开闭原则。既不破坏原有逻辑,又可以实现前后日志的功能。动态代理,又成为运行时代理。Invoke 可以拿到当前调用的对象和方法名,参数列表。代理生成类采用Emit的方式生成运行时IL代码。但是继承重写的方式需要把业务类的所有方法写成virtual虚方法,动态类会重写该方法。
暂无评论