AOP之PostSharp5-LocationInterceptionAspect

简介:

这节我们要讨论的是PostSharp的LocationInterceptionAspect,PostSharp官方把Property和Field成为Location。所以LocationInterceptionAspect就是为了实现Property和Field的拦截。在我们前面讨论了关于方法OnMethodBoundaryAspect的aspect,我们很容易想到,在c#中Property就是一个编译时分为Get和Set两个方法,对于property的aspect就类似于了我们的Method的aspect。而对于Field的aspect同样可以转换为对Property的aspect。

下面我们用反编译工具来证实一下我的说法.

代码:

[LazyLoad( " test "" test ")] 
        private  string TestField;

编译后:

image

我们在来看看LocationInterceptionAspect定义:

image

其OnGetvalue和OnSetValue是我们主要拦截的方法,起参数LocationInterceptionArgs定义:

image

同样给也拥有来自父类AdviceArgs的Instance对象,对于对象级Location为所在对象,静态则为null;

LocationInterceptionAspect的使用方法和我们的OnMethodBoundaryAspect和类似,使用方式也一样,对于使用对不重要,鄙人觉得更重要的是我们的设计思想。

我暂时能想到的很好的LocationInterceptionAspect使用场景则是LazyLoad,对于3.5表达式的出现,我们到处都可以简单这个词,在c#类库中也加入了这个类。

这里我们只是做一个简单的演示demo,根据attribute上制定的类型的方法延时加载对象,废话不说了上code:

View Code
测试code:
View Code
效果图片如下:

QQ截图未命名

附件下载:dmeo

AOP之PostSharp初见-OnExceptionAspect AOP之PostSharp2-OnMethodBoundaryAspect AOP之PostSharp3-MethodInterceptionAspect AOP之PostSharp4-实现类INotifyPropertyChanged植入 AOP之PostSharp5-LocationInterceptionAspect AOP之PostSharp6-EventInterceptionAspect http://www.cnblogs.com/whitewolf/category/312638.html


本文转自破狼博客园博客,原文链接:http://www.cnblogs.com/whitewolf/archive/2011/12/11/PostSharp5.html,如需转载请自行联系原作者

目录
相关文章
|
6月前
|
缓存 监控 Java
Spring框架之AOP(面向切面编程)
Spring框架之AOP(面向切面编程)
34 0
|
9月前
|
XML Java 数据格式
三、AOP(二)
三、AOP(二)
54 0
|
6月前
|
Java Maven Spring
AOP切面编程
AOP(Aspect Oriented Programming)是一种设计思想,是软件设计领域中的面向切面编程,它是面向对象编程的一种补充和完善,它以通过预编译方式和运行期动态代理方式实现在不修改源代码的情况下给程序动态统一添加额外功能的一种技术。
55 0
|
7月前
|
Java 编译器 Maven
AOP
底层实现方式之一是代理,由代理结合通知和目标,提供增强功能 除此以外,aspectj 提供了两种另外的 AOP 底层实现: 第一种是通过 ajc 编译器在编译 class 类文件时,就把通知的增强功能,织入到目标类的字节码中 第二种是通过 agent 在加载目标类时,修改目标类的字节码,织入增强功能 作为对比,代理是运行时生成新的字节码 简单比较的话: aspectj 在编译和加载时,修改目标字节码,性能较高 aspectj 因为不用代理,能突破一些技术上的限制,例如对构造、对静态方法、对 final 也能增强 但 aspectj 侵入性较强,且需要学习新的 aspectj 特有语
44 1
|
9月前
|
XML Java 数据格式
三、AOP(一)
三、AOP(一)
53 0
三、AOP(一)
|
10月前
|
Java
AOP详细介绍
AOP(Aspect-Oriented Programming)是一种编程范式,旨在通过将横切逻辑(cross-cutting concerns)从核心业务逻辑中分离出来,以提高代码的可维护性和可重用性。在Java中,AOP可以通过动态代理来实现。
412 0
|
10月前
|
监控 Java 数据安全/隐私保护
什么是AOP?
AOP(Aspect-Oriented Programming,面向切面编程)是一种编程范式,通过将横切关注点(Cross-cutting Concerns)从核心业务逻辑中分离出来,使得代码的组织结构更清晰,易于维护和扩展。
193 0
|
12月前
|
Java Spring
实现一个简单的AOP
实现一个简单的AOP
|
数据安全/隐私保护
你不是说你会Aop吗?
你不是说你会Aop吗?
101 0
Aop说明
在xml配置中用到那个标签在开启不然不用,他会报错 1.对接口进行动态代理:创建出来的对象必须转换成接口类型                                          原因他创建的是实现类而不是不是接口所以实现的时候必须转换成接口                     ...
880 0