作业帮 > ASP.NET > 教育资讯

ASP.NET源代码:源轻量级AOP的实现

来源:学生作业帮助网 编辑:作业帮 时间:2024/04/28 06:54:00 ASP.NET
ASP.NET源代码:源轻量级AOP的实现
ASP.NET源代码:源轻量级AOP的实现ASP.NET
【51Test.NET-ASP.NET源代码:源轻量级AOP的实现】:

 为了让项目的代码看起来更干净,需要一个AOP!

  于是就实现了一个非常简单的,非常轻量级,有多轻量级呢?

  实现的AOP叫做Earthworm(蚯蚓,为什么叫这个?因为它小,它会疏通!,项目的本意也是这样,所以就叫这个!),命名空间Earthworm下有8个代码文件,包括4个公开接口,1个公开特性,1个公开的抽象类,2个内部类。所以对外部调用者而言,可见的只有6个,够轻量级了吧!

  先看项目的组成!

 一:先从简单的说吧!4个公开的接口:IStopAdvice

 

以下是代码片段:
 ///
  /// 拦截通知接口
  ///
  public interface IStopAdvice
  { ///
  /// 是否可以继续方法的执行
  ///
  ///要执行方法的调用消息
  ///如果可以继续执行,返回true,否则为false
  bool CanContinueMethod(IMethodCallMessage msg); }
  ////////////////////////////////////////////////////////////////////////// /**示例
  ///
  /// 检查对象权限,可以在用户进行关键操作的方法前
  /// 比如btn_DeleteUser_Click方法
  ///
  class CheckPermission : IStopAdvice
  {
  ///
  /// 检查当前用户的权限
  /// 如果是管理员则可以继续执行方法
  /// 否则不能执行
  ///
  /// 要执行方法的调用消息
  /// 是管理员返回true,否则为false
  public bool CanContinueMethod(IMethodCallMessage msg)
  { if (User.CurrentUser.IsAdministrator)
  return true;
  else
  return false; }
  } * */ //////////////////////////////////////////////////////////////////////////

  二: IBeforeAdvice

以下是代码片段:
 ///
  /// 前通知接口
  ///
  public interface IBeforeAdvice {
  ///
  /// 在方法执行前,需要进行的通知
  ///
  ///要执行方法的调用消息
  void DoAdvice(IMethodCallMessage callMsg);
  }
  ////////////////////////////////////////////////////////////////////////// /**示例 ///
  /// 用户登录时间记录对象
  ///
  class LoginTimeLogger:IBeforeAdvice {
  ///
  /// 记录当前用户登录到系统的时间
  ///
  /// 要执行方法的调用消息
  public void DoAdvice(IMethodCallMessage callMsg)
  { if (callMsg==null)
  {
  return;
  }
  Log.Write(string.Format
  ("用户:{0}于{1}登陆到此系统",
  User.CurrentUser.Name, DateTime.Now.ToString()));
  }
  }
  **/

 三:IAfterAdvice

以下是代码片段:
   ///
  /// 后通知接口
  ///
  public interface IAfterAdvice { ///
  /// 在方法执行后,需要进行的通知
  ///
  ///执行完方法的返回消息
  void DoAdvice(IMethodReturnMessage callMsg);
  }
  ////////////////////////////////////////////////////////////////////////// /**示例
  ///
  /// 用户登出时间记录
  ///
  class LogoutTimeLogger:IAfterAdvice
  { ///
  /// 记录当前用户登出系统的时间
  ///
  /// 执行完方法的返回消息
  public void DoAdvice(IMethodReturnMessage callMsg)
  { if (callMsg == null) {
  return;
  }
  Log.Write(string.Format("用户:{0}于{1}登出此系统", User.CurrentUser.Name, DateTime.Now.ToString()));
  }
  } **/

  注释比较齐全就不说了,这三个接口是提供给“通知对象”的!

ASP.NET