【asp源码栏目提醒】:网学会员在asp源码频道为大家收集整理了“PostSharp AOP编程:1 基于PostSharp的AOP日志记录和异常捕捉【附带源码】-asp net学习网 - 讲义教程“提供大家参考,希望对大家有所帮助!
c.net编程学习网 PostSharp AOP编程1.基于PostSharp的AOP日志记录和异常捕捉【附带
源码】 PostSharp AOP编程1.基于PostSharp的AOP日志记录和异常捕捉【附带
源码】 内容 PostSharp AOP编程1.基于PostSharp的AOP日志记录和异常捕捉【附带
源码】 AOP基于切面编程它是对业务逻辑的分离使各个业务直接的耦合变低比如在传统的OOP编程中将日志记录、异常处理、权限管理等方面剥离出来。
在今后的维护过程中对其改变日志记录、异常处理、权限管理方法的时候不用去改变主业务流程逻辑代码。
提高开发效率。
PostSharp采用特性的方式来对编译后的主业务流程方法逻辑横向静态注入截取数据。
下面我们将以一个实例来演示如何使用PostSharp实现AOP进行日志记录和异常处理。
首先需要安装PostSharp 2.1.4.1免费版本这个版本只是功能相对较少可商用能够满足日志记录和异常截取的要求。
点击PostSharp-2.1.4.1 下载. 然后新建一个控制台项目并将PostSharp.dll引入该项目中。
编写一个截取日志的特性LogsAttributes.cs。
//日志特性截取类 Serializable AttributeUsageAttributeTargets.Method AllowMultiple true Inherited true class LogsAttribute:OnMethodBoundaryAspect /// /// 入口参数信息 /// public string EntryText get set /// /// 出口参数信息 /// public string ExitText get set /// /// 异常信息 /// public string ExceptionText get set //进入函数时输出函数的输入参数 public override void OnEntryMethodExecutionArgs eventArgs Arguments arguments eventArgs.Arguments StringBuilder sb new StringBuilder ParameterInfo parameters eventArgs.Method.GetParameters for int i 0 arguments null i arguments.Count i //进入的参数的值 sb.Append parametersi.Name argumentsi string message string.Format0.1 Method. The Entry Arg Is2 eventArgs.Method.DeclaringType.FullName eventArgs.Method.Name sb.ToString Console.WriteLinemessage //退出函数时的函数返回值 public override void OnExitMethodExecutionArgs eventArgs Console.WriteLinestring.Format0.1 Method. The Result Is2 eventArgs.Method.DeclaringType.FullName eventArgs.Method.Name eventArgs.ReturnValue.ToString //函数发生异常时记录异常信息 public override void OnExceptionMethodExecutionArgs eventArgs Console.WriteLinestring.Format0.1 Method. The Exception Is2 eventArgs.Method.DeclaringType.FullName eventArgs.Method.Name eventArgs.Exception.Message 再看看当出现异常时通过try catch处理异常ExceptionAttribute.cs类捕捉并且处理异常 //截取异常并且处理异常 Serializable AttributeUsageAttributeTargets.Method AllowMultiple true Inherited true class ExceptionAttribute:MethodInterceptionAspect //调用本函数时截取异常 public override void OnInvokeMethodInterceptionArgs args try base.OnInvokeargs catchException ex Console.WriteLinestring.Format此方法异常信息是0 ex.ToString 在客户端编写两个方法来测试PostSharp是否静态注入并且捕获到相关信息代码如下 class Program static void Mainstring args Add3 5 Console.WriteLine------------------------------------------------------- Subject5 12 Console.ReadLine //此函数让我们看其输入参数和返回值的日志记录 Logs Exception public static int Addint a int b return a b //此函数看我们的异常通过自定义Exception特性记录下来 Logs Exception public static int Subjectint a int b throw new ArgumentException减法出现异常需要处理 return a - b 下面是项目运行效果如需
源码请点击 PostSharpAOP.zip 下载。
?? 2011 c.net编程学习网 xml地图
上一篇:
尚俊杰_网络程序设计——ASP(第3版)课后习题答案
下一篇:
问卷调查可以自动生成试卷等,并且只能一个用户登录