C# 使用Emit实现动态AOP框架 进阶篇之优化

在前几篇文章中,有几个遗留问题还没有处理:

1、切面特性对象的InterceptType属性没有处理,分别取值OnEntry(只触发入口)、OnExit(只触发出口)、All(都触发);

2、AspectExceptionAttribute我们只是修改了 ILGenerateProxyMethod,实现了异常处理,但是造成的结果时所有方法和属性(Get、Set方法)都进行了异常处理;

3、代理类中,各代理方法中的相关特性调用代码冗余,随着特性的增多,这些代码也成倍增加;

1 LogAttribute logAttribute = new LogAttribute();
2 logAttribute.OnEntry(aspectContext);
3 base.Age = value;
4 logAttribute.OnExit(aspectContext);

4、一般属性切入时,我们只切入Set方法,而现在Get、Set都进行了切入,灵活性不够;

下面我们针对这四个问题进行优化:

猜你喜欢

转载自www.cnblogs.com/accode/p/10907202.html
今日推荐