zoukankan      html  css  js  c++  java
  • 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     }



     

  • 相关阅读:
    Lucene简介
    网页去重和网页反作弊
    一个不应该犯的错octave
    使用有道笔记
    向量操作的思想
    暗时间(介绍)-关于坚持的一个故事
    bootstrap插件学习-bootstrap.tab.js(读码)
    Bootstrap 实现CRUD示例及代码
    Bootstrap Table 使用示例及代码
    Bootstrap Table相关参数及属性、方法
  • 原文地址:https://www.cnblogs.com/aaa6818162/p/1984020.html
Copyright © 2011-2022 走看看