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