在前几篇文章中,有几个遗留问题还没有处理:
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都进行了切入,灵活性不够;
下面我们针对这四个问题进行优化: