PostSharp AOP

选用 PostSharp 的好处有:
1.采用 MSIL 静态代码注入,避免使用反射;
2.使用 MSBuild Task,使得开发人员可以像使用编译器内置 Attribute 那样使用 AOP;
3.可以拦截任意方法而不是局限于 virtual 方法;
4.对调用方法有更多的控制方法,比如输入参数,返回结果等

 

 1    class  Start
 2      {
 3           static   void  Main() {
 4              Speak( " 我开始哈 " );
 5              EndSpeak();
 6              Console.ReadKey();
 7          }
 8 
 9          [Posts( " 开始说话了.. " )]
10           private   static   void  Speak( string  message) {
11              Console.WriteLine( " .{0}.....正式执行了.... " , message);
12          }
13 
14          [Posts( " error: " )]
15          [onException( " endspeak " )]
16           static   void  EndSpeak() {
17              Console.WriteLine( " 会发生错误的调用...... " );
18               throw   new  Exception( " ====== 这是故意发生的错误.=== " );
19          }
20      }
21 
22 
23  ///
24  aop
25     [Serializable]
26      [ global ::System.AttributeUsage(AttributeTargets.All, AllowMultiple  =   true )]
27       public   class  PostsAttribute : OnMethodBoundaryAspect
28      {
29 
30           private   string  _msg  =   string .Empty;
31           public  PostsAttribute( string  message)
32          {
33              _msg  =  message;
34          }
35 
36           public   override   void  OnEntry(MethodExecutionEventArgs args)
37          {
38               if  ( new  PermissionHandler().Add()) // 判断权限
39              {
40                  Console.WriteLine(_msg  +   " mmmmmmmmmmm...{0}...onEntry...... " , DateTime.Now);
41                   //   base.OnEntry(args);
42              }
43               else
44              {
45                  args.ReturnValue  =   false ;
46                  args.FlowBehavior  =  FlowBehavior.Return;
47              }
48          }
49 
50           public   override   void  OnSuccess(MethodExecutionEventArgs eventArgs)
51          {
52               base .OnSuccess(eventArgs);
53          }
54 
55           public   override   void  OnExit(MethodExecutionEventArgs args)
56          {
57              Console.WriteLine( " ...{0}...OnExit...... " , DateTime.Now);
58               base .OnExit(args);
59          }
60      }
61 
62  // 权限判断
63    public   class  PermissionHandler
64      {
65           ///   <summary>
66           ///  判断是否有权限
67           ///   </summary>
68           ///   <returns></returns>
69           public   bool  Add()
70          {
71               return   false ;
72          }
73      }

 

 



 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值