AOP是基于动态代理技术的。在学习AOP之前必须明白几个概念,这几个概念我将由配置AspectSharp(以下简称A#)的配置文件中一一引出,包括:Advice、Pointcut、Advister、Mixin 。
A#有自己独特的配置语言,当然也支持XML,但是新的配置语言我觉得比XML更加明了直观,而且也是非常容易使用的。 详细的官方文档在这里:http://www.castleproject.org/index.php/AspectSharp_Language_Documentation
1)配置必须按照以下顺序:
[Global Interceptor map]
[Global Mixin map]
Aspects definitions
2)[Imports]:引入命名空间,在下面的配置中用到的拦截器、混淆器所需要的。
3)[Global Interceptor map]:如果你想在程序共享同一个拦截器而不想重复声明可以将Interceptor声明为全局,在同一配置文件中重用,而不用再次打长长的名称,用声明的别名就可以了。
"key" : InterceptorType ;
"key2" : InterceptorType2
]
4)[Global Mixin map] : 同样混淆器也可以声明为全局。
"key" : MixinType ;
"key2" : MixinType2
]
5)Aspects definitions : 具体定义一个“切面(需要拦截的地方)”
[include]
[pointcuts]
end
6)[include] :定义混淆器(mixin)组合的类
include DigitalGravity.Mixins.Security in DigitalGravity.XProject
include System.Collections.ArrayList in System
end
7)[pointcuts] :拦截的具体名称,这里先指定拦截的类型并可以用通配符匹配名称。类型如下: