1.在项目中无处不充斥着记录日志的代码,各种try catch,实在是有点看着不爽。这不,果断要想法子偷个懒儿。
1.通过继承特定实例,重写虚方法(C#中如virtual、override方法),动态构建一个该实例的子类,进行调用。
2.通过实现特定实例上的接口,动态构建一个该接口的实现类,切入AOP代码,内部包裹特定实例的方法。
3.最简单的一种方式,通过给特定实例继承MarshalByRefObject类,并且用继承RealProxy的代理类进行构造包裹。
代码比较少,有些Emit基础的童鞋应该很容易看懂,接下去直接上核心代码。
该种方式,与继承类模式十分类似,唯一的区别是其保存了被Aop的实例到一个全局变量,通过该全局变量进行相应的业务方法调用。
五、通过MarshalByRefObject和RealProxy
该种方式,通过一个继承了RealProxy的类,来包裹一个继承了MarshalByRefObject的类,进行拦截该被Aop的实例的方法的调用。
3.通过重新实例化ReturnMessage返回给是调用实例。
联系客服