日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

AOP之PostSharp2-OnMethodBoundaryAspect

發布時間:2025/5/22 编程问答 62 豆豆
生活随笔 收集整理的這篇文章主要介紹了 AOP之PostSharp2-OnMethodBoundaryAspect 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在上一篇中我們了解了簡單的OnExceptionAspectAOP面向方向切入,在第一節中我們將繼續我們的PostSharp AOP系列的OnMethodBoundaryAspect方法行為的切入,這也是我們常用的AOP切入。

?? OnMethodBoundaryAspect顧名思義其為對方法邊界的切入,定義如下:

在這里提供了四個方法邊界點為我們切入。我們可以很輕松的對方法權限,執行時間,參數合法性等aspect。

aspect傳入參數MethodExecutionArgs給我如下信息,同時還包括父類AdviceArgs的Instance屬性,實例方法才有值,靜態方法則為null,

這里還需要說一下屬性FlowBehavior:表示方法執行行為,是一個枚舉變量:

二:執行時間統計demo

下面我們實踐一個方法執行時間統計demo:

using?System;
using?System.Collections.Generic;
using?System.Linq;
using?System.Text;
using?PostSharp.Aspects;

namespace?PostSharpDemo
{
????[Serializable]
????public?class?OnMethodBoundaryAspectDemoAttribute?:?OnMethodBoundaryAspect
????{
????????public?bool?Enabled
????????{
????????????get;
????????????set;
????????}

????????public?override?void?OnEntry(MethodExecutionArgs?args)
????????{
????????????if?(this.Enabled)
????????????{
????????????????args.MethodExecutionTag?=?System.Diagnostics.Stopwatch.StartNew();
????????????}
????????}
????????public?override?void?OnExit(MethodExecutionArgs?args)
????????{
????????????if?(this.Enabled)
????????????{
????????????????var?sw?=?args.MethodExecutionTag?as?System.Diagnostics.Stopwatch;
????????????????if?(sw?!=?null)
????????????????{
????????????????????sw.Stop();
????????????????????Console.WriteLine(String.Format("方法{0}執行時間為:{1}s",?args.Method.Name,?sw.ElapsedMilliseconds?/?1000));
????????????????????sw?=?null;
????????????????}
????????????}
????????}
????}
}

測試方法:

[OnMethodBoundaryAspectDemoAttribute(Enabled=true)]?
???????public?static?void?OnMethodBoundaryAspectDemoAttributeTest()?
???????{?
???????????System.Threading.Thread.Sleep(2000);?
???????}

結果如下:

注:這里我們也可以用到我們上節說的 多播(Multicasting)加到我們的class,assembly上統計我們所有的方法。

在最后在廢話一句,我們可以很輕松的指定我們的方法(比如使我們的wcf服務操作契約)的訪問權限,比如基于操作權限的功能點function的處理,如[PowerAttribute(“Add,Edit”)]這樣簡單處理,我們只需要在OnEnter中aspect,決定方法FlowBehavior行為,剩下的事情教給大家自己實踐。

?? 歡迎大家積極指正和多多交流。

附件:demo下載

其他AOP參考:

AOP之PostSharp初見-OnExceptionAspect AOP之PostSharp2-OnMethodBoundaryAspect AOP之PostSharp3-MethodInterceptionAspect AOP之PostSharp4-實現類INotifyPropertyChanged植入 AOP之PostSharp5-LocationInterceptionAspect http://www.cnblogs.com/whitewolf/category/312638.html


本文轉自破狼博客園博客,原文鏈接:http://www.cnblogs.com/whitewolf/archive/2011/12/04/PostSharp2.html,如需轉載請自行聯系原作者

總結

以上是生活随笔為你收集整理的AOP之PostSharp2-OnMethodBoundaryAspect的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。