PostSharp AOP编程:2.PostSharp的OnMethodBoundaryAspect类基本组成-阿里云开发者社区

开发者社区> 橘子红了呐> 正文

PostSharp AOP编程:2.PostSharp的OnMethodBoundaryAspect类基本组成

简介:
+关注继续查看

首先我们下载PostSharp 2.1.5.1,选择精简版本(价格为0美元)下订单地址是:http://www.sharpcrafters.com/purchase/compare,。我们需要注册一个OpenID,然后购买下来,它会发送一个精简版的License到你的注册邮箱中。点击PostSharp2.1.5.1安装文件输入Lincense即可完成。

     PostSharp是编译时将IL语言静态注入程序中,在免费版本中我们能够使用PostSharp对方法、字段和属性进行AOP截取数据而不能对事件进行AOP截取。下面我们来看看针对方法、字段和属性的AOP处理类:

     OnMethodBoundaryAspect

     继承于此类的特性A将围绕整个方法B进行静态注入式的处理,这个特性A可以重载覆写OnMethodBoundaryAspect类的OnEntry()、OnSuccess()、OnException()、OnExit()方法。如下代码:

复制代码
    [Serializable]
public sealed class LogsAttribute : OnMethodBoundaryAspect
{
//进入函数时
public override void OnEntry(MethodExecutionArgs args)
{
base.OnEntry(args);
}
//函数执行成功时
public override void OnSuccess(MethodExecutionArgs args)
{
base.OnSuccess(args);
}
//发生异常时
public override void OnException(MethodExecutionArgs args)
{
base.OnException(args);
}
//退出函数时
public override void OnExit(MethodExecutionArgs args)
{
base.OnExit(args);
}
}
复制代码

       其覆写函数时的运行顺序和结果如下代码所示:

复制代码
        int MethodA(object arg0, int arg1)
{
//函数进入时添加OnEntry()方法
OnEntry();
try
{
// 函数在此运行完毕
//如果成功则继续运行OnSuccess()方法
OnSuccess();
return returnValue;
}
catch (Exception e)
{
//如果函数执行有问题,则运行OnException()方法
OnException();
}
finally
{
//最后执行OnExit()方法
OnExit();
}
}
复制代码

      所以我们可以通过OnMethodBoundaryAspect编写特性去围绕方法截取数据,并且处理方法内部数据。如异常处理特性、日志记录特性、缓存记录特性和权限管理特性。


本文转自程兴亮博客园博客,原文链接:http://www.cnblogs.com/chengxingliang/archive/2011/11/28/2264345.html,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
.NET数据库编程求索之路--4.使用ADO.NET实现(三层架构篇-使用Table传递数据)(5)
4.使用ADO.NET实现(三层架构篇-使用Table传递数据)(5)     作者:夏春涛 xchunta@163.com 转载请注明来源:http://www.cnblogs.com/SummerRain/archive/2012/07/25/2609166.
737 0
leetCode 编程笔记
问:编写一个函数来查找字符串数组的最长公共前缀。如果不存在公共前缀,返回空字符串 “”。 示例输入:["flower", "flow", "flight"] 示例输出:"fl" 示例输入:["dog", "racecar", "car"] 示例输出:"" 解释:输入不存在公共前缀。
1013 0
【转】BarTender与ASP.NET的集成小结(条码标签打印编程)
话说自从上次发了篇NHibernate的资料后,好久没有写东西了,半年来一直在忙一个项目,做完项目后,发现很多东西虽然当时做了,懂了,但是很快就会模糊了,于是又再想起总结的重要性~~没啥地方好放资料的,放在博客园也是一个不错的选择~~   本人也是新手,写的不好的地方,请多原谅。
1882 0
.NET数据库编程求索之路--7.使用ADO.NET实现(工厂模式-实现多数据库切换)(2)
7.使用ADO.NET实现(工厂模式-实现多数据库切换)(2)     7.3 数据访问层工厂HomeShop.DALFactory      1 using System; 2 using System.
891 0
.NET数据库编程求索之路--7.使用ADO.NET实现(工厂模式-实现多数据库切换)(1)
7.使用ADO.NET实现(工厂模式-实现多数据库切换)(1)     7.1 解决方案框架 解决方案(.sln)包含以下几个项目: (1)类库项目HomeShop.DbUtility,数据访问实用工具; (2)类库项目HomeShop.
744 0
LeetCode 编程
给一个包含 n 个整数的数组 S, 找到和与给定整数 target 最接近的三元组,返回这三个数的和。 For example, given array S = {-1 2 1 -4}, and target = 1.
1489 0
.NET数据库编程求索之路--4.使用ADO.NET实现(三层架构篇-使用Table传递数据)(4)
4.使用ADO.NET实现(三层架构篇-使用Table传递数据)(4)     作者:夏春涛 xchunta@163.com 转载请注明来源:http://www.cnblogs.com/SummerRain/archive/2012/07/25/2609154.
683 0
.NET数据库编程求索之路--7.使用ADO.NET实现(工厂模式-实现多数据库切换)(4)
7.使用ADO.NET实现(工厂模式-实现多数据库切换)(4) 7.7 业务逻辑层HomeShop.BLL OrderBiz.cs View Code  1 using System; 2 using System.
776 0
.NET数据库编程求索之路--7.使用ADO.NET实现(工厂模式-实现多数据库切换)(3)
7.使用ADO.NET实现(工厂模式-实现多数据库切换)(3)   7.5 SQL数据访问层HomeShop.DALOfSql   OrderDAO.cs View Code using System;using System.
669 0
3404
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载