很早就注意到AOP将带来一些新的气象,不过AOP的一些思想在.NET里应该是有体现的.如果你做过ASP.NET的filter过滤,可能就会比较容易理解了.

和以往一样,我这不过多谈理论,你可以随便找到一把文章.
接下来的例子可以下载:
https://files.cnblogs.com/QPG2006/AopDemo.rar

没有把它集成到GPG_Demo方案中是避免影响其他例子的效果,下面开始吹牛了,请打起精神.

AOP是想有更加省事省时的办法现有操作扩展一些行为,常见的是日志操作和权限判断.
当然你也可以手工在那些需要的调用前执行加入扩展行为,只是确实挺麻烦的.

我们下面的例子有两个意图:
1) 对所有方法和属性设置进行日志操作
2) 只允许经理去调整产品的价格

下面的例子是演示如何利用Castle.DynamicProxy来实现,实际应用就比较麻烦,但是能说明思路.
你可以执行Step1下的测试来看看结果.代码如下:

如果在真的项目里使用,采用castle集成的Aspect#会好些,你要配置如下的文件(在step2项目里有):
技术篇(6)--大话AOP<?xml version="1.0" encoding="utf-8" ?> 
技术篇(6)--大话AOP
技术篇(6)--大话AOP
<configuration> 
技术篇(6)--大话AOP 
技术篇(6)--大话AOP    
<components>
技术篇(6)--大话AOP        
<component id="salemgr" type="Castle.AopDemo.Components.SaleMgr, AOP">
技术篇(6)--大话AOP           
<parameters>
技术篇(6)--大话AOP                
<Role>Role.Manager</Role>
技术篇(6)--大话AOP           
</parameters>
技术篇(6)--大话AOP         
</component>
技术篇(6)--大话AOP         
<component id="product" type="Castle.AopDemo.Components.Product, AOP">
技术篇(6)--大话AOP          
<parameters>
技术篇(6)--大话AOP                
<name>P1</name>
技术篇(6)--大话AOP                
<price>100</price>
技术篇(6)--大话AOP                
<num>5</num>
技术篇(6)--大话AOP           
</parameters>
技术篇(6)--大话AOP         
</component>
技术篇(6)--大话AOP    
</components>
技术篇(6)--大话AOP   
技术篇(6)--大话AOP      
<facilities> 
技术篇(6)--大话AOP        
<facility id="aspectsharp" type="Castle.Facilities.AspectSharp.AspectSharpFacility,Castle.Facilities.AspectSharp"> 
技术篇(6)--大话AOP
<![CDATA[ 
技术篇(6)--大话AOPimport Castle.AopDemo.Components 
in AOP
技术篇(6)--大话AOP
技术篇(6)--大话AOPimport Castle.AopDemo.Mixins 
in AOP
技术篇(6)--大话AOP
技术篇(6)--大话AOPimport Castle.AopDemo.Interceptors 
in AOP
技术篇(6)--大话AOP
技术篇(6)--大话AOPaspect LogForProperty 
for [Castle.AopDemo.Components]
技术篇(6)--大话AOP  include SecurityMixin 
技术篇(6)--大话AOP  pointcut propertywrite
|method(*)
技术篇(6)--大话AOP    advice(Castle.AopDemo.Interceptors.LoggerInterceptor) 
技术篇(6)--大话AOP   
技术篇(6)--大话AOP  end 
技术篇(6)--大话AOPend 
技术篇(6)--大话AOP
技术篇(6)--大话AOP
技术篇(6)--大话AOP]]
> 
技术篇(6)--大话AOP        
</facility> 
技术篇(6)--大话AOP    
</facilities> 
技术篇(6)--大话AOP
</configuration> 

下面是演示片断:
限于篇幅,还是请有兴趣的读者下载示例看效果吧,我就不截图了。


相关文章:

  • 2021-10-06
  • 2021-05-10
  • 2021-05-06
  • 2021-12-03
  • 2022-12-23
  • 2021-04-09
  • 2022-01-08
猜你喜欢
  • 2021-08-28
  • 2021-08-20
  • 2021-11-22
  • 2021-10-22
  • 2021-11-26
  • 2021-04-02
相关资源
相似解决方案