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

asp.net源码下载:源轻量级AOP的实现

来源:学生作业帮助网 编辑:作业帮 时间:2024/11/27 07:05:15 ASP.NET
asp.net源码下载:源轻量级AOP的实现
asp.net源码下载:源轻量级AOP的实现ASP.NET
【51Test.NET-asp源码下载:源轻量级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