1.nuget安装postsharp

2.编写attribute标记

[Serializable]
[AttributeUsage(AttributeTargets.Method, AllowMultiple = true, Inherited = true)]
public class CustomerExceptionLogAttribute : OnMethodBoundaryAspect
{
private ILog logger; public CustomerExceptionLogAttribute()
{
logger = new TXTLogger();
} public override void OnException(MethodExecutionArgs args)
{
base.OnException(args);
System.Windows.Forms.MessageBox.Show("OnException:" + args.Method.Name);
//logger.Log(string.Format("{0}:{1}", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), args.Exception.Message));
} public override void OnEntry(MethodExecutionArgs args)
{
var method = args.Method;
var ps=method.GetParameters();
var pv = args.Arguments;
string p = "";
int index = ;
ps.ToList().ForEach(ee=> {
var val = pv[index]; //参数值
p+=ee.Name +":"+val+ ":" + ee.ParameterType + "\r\n";
index++;
}); base.OnEntry(args);
System.Windows.Forms.MessageBox.Show("OnEntry:"+args.Method.Name+"|"+p);
} public override void OnExit(MethodExecutionArgs args)
{
base.OnExit(args);
System.Windows.Forms.MessageBox.Show("OnExit:" + args.Method.Name);
} public override void OnSuccess(MethodExecutionArgs args)
{
base.OnSuccess(args);
System.Windows.Forms.MessageBox.Show("OnSuccess:" + args.Method.Name);
} }

3.使用

[CustomerExceptionLog] //给方法打上标记
public decimal GetPercent(int a, int b)
{
return decimal.Parse(a + "") / decimal.Parse(b + "");
} private void button1_Click(object sender, EventArgs e)
{
GetPercent(, );
} private void button2_Click(object sender, EventArgs e)
{
var percent = GetPercent(, );
}

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

参考:http://www.cnblogs.com/xingluzhe/p/4738150.html

问题1:如果想对类的所有方法定义统一的异常日志记录的特性,怎么办呢?

如果把特性Targets定义为All或class,可以捕获该类的所有的方法的异常

问题2:如果想对程序集(dll)中每个方法定义异常日志记录的特性,怎么呢?

把特性的Targets定义为all或Assembly,然后在AssemblyInfo.cs文件中,新增程序集的特性

From:http://www.cnblogs.com/xuejianxiyang/p/7065797.html

aop postsharp的使用:在方法进入/成功/失败/退出时获取方法名和参数值的更多相关文章

  1. AOP - PostSharp 2.0

    PostSharp是一个非常优秀的AOP框架,使用上非常方便,功能强大,对目标拦截的方法不需要做什么修改,但现在已经商业化运作从PostSharp官方网站下载一个试用版,安装 简单示例PostShar ...

  2. 使用SDWebImage下载图片,sharedDownloader方法下载成功,new 方法下载失败

    一,经历 1.使用 new 方法创建下载对象时,下载图片总是失败,而且不会执行成功或失败后的回调. 2.参考别人的代码,用的是sharedDownloader来创建下载对象,可以顺利下载图片. 3.看 ...

  3. Spring AOP:面向切面编程,AspectJ,是基于注解的方法

    面向切面编程的术语: 切面(Aspect): 横切关注点(跨越应用程序多个模块的功能)被模块化的特殊对象 通知(Advice): 切面必须要完成的工作 目标(Target): 被通知的对象 代理(Pr ...

  4. spring aop pointcut 切入点是类的公共方法(私有方法不行),还是接口的方法

    spring aop pointcut 切入点是类的公共方法(私有方法不行),还是接口的方法 类的公共方法可以,但是私有方法不行 测试一下接口的方法是否能够捕捉到

  5. Github与Eclipse连接(方法2成功:Pleiades)

    2018-3-7 第1次尝试 主要参考这位大神的笔记:http://blog.csdn.net/zhangdaiscott/article/details/16939165 方法非常简单,从官网htt ...

  6. STM32 USB转串口驱动安装不成功出现黄色感叹号解决方法!

    相信很多人在做USB转串口时出现过串口驱动安装不成功,出现黄色感叹号问题, 出现这种问题一般是驱动安装不成功造成的. 这里我就这个问题总结几个简单的方法. 方法1: 插上USB,利用驱动人生安装驱动. ...

  7. ajax方法请求成功后,没有执行success的方法

    $.ajax( { type: "POST", url: "AddSupplier.aspx", dataType:"text", data ...

  8. AOP获取方法注解实现动态切换数据源

    AOP获取方法注解实现动态切换数据源(以下方式尚未经过测试,仅提供思路) ------ 自定义一个用于切换数据源的注解: package com.xxx.annotation; import org. ...

  9. vue在钩子中引用方法不成功

    在组建创建成功后调用methods里的方法fn1,失败,提示not a function: created(){ getData(){} } solution: created(){ this.get ...

随机推荐

  1. windows平台下Android studio开发环境搭建教程

    最近,Google 已宣布,为了简化 Android 的开发力度,以重点建设 Android Studio 工具,到今年年底将停止支持Eclipse等其他集成开发环境 .而随着Android stud ...

  2. 红米手机3S 3X简单卡刷开发版获得ROOT权限的方法

    小米的机器不同手机型号一般小米论坛都提供两个不同的系统,即分别是稳定版和开发版,稳定版没有提供root权限管理,开发版中就支持了root权限,很多情况下我们需要使用的一些功能强大的APP,都需要在ro ...

  3. 小米MIX 3获得ROOT权限的步骤

    小米MIX 3有没有办法开启Root超级权限?大伙都知道,Android设备有Root超级权限,一旦手机开启root相关权限,可以实现更强大的功能,比如大伙部门的营销部门的妹纸,使用一些营销工具都需要 ...

  4. Cook-Torrance光照模型

    Cook-Torrance光照模型将物体粗糙表面看作由很多微平面组成,每一个微平面都可以看成一个理想的镜面反射体,物体表面粗糙程度由微平面斜率的变化来表示.越粗糙的表面由斜率变化越大,反之越小. Co ...

  5. (转)Linux服务器SNMP常用OID

    原文:https://www.haiyun.me/archives/linux-snmp-oid.html 收集整理一些Linux下snmp常用的OID,用做服务器监控很不错.服务器负载: 1 2 3 ...

  6. 纯Python给ulaw wav文件加头

    最近在处理wav相关文件,碰见一工具产生的ualw文件不带header,顺手用python给wav格式文件加头处理,让普通播放器也能播放. (原文:http://www.cnblogs.com/ryh ...

  7. 安装Cloudera Manager集群时首次运行命令部署客户端设置失败的解决办法(图文详解)

    不多说,直接上干货! 问题详情 解决办法 (1) 时间同步检查下(尤其是这个) (2) 防火墙是否关闭 (3) cloudera-scm-server 和 cloudera-scm-agent 是否启 ...

  8. 遇到Caused by: java.lang.NoClassDefFoundError: javax/validation/ParameterNameProvider

    今天在做spring和hibernate整合的时候遇到这个问题 网上搜找到这里有解决办法 http://blog.csdn.net/jueshengtianya/article/details/122 ...

  9. shell里面的#!

    放在第一行的#! /system/bin/sh 我之前误以为是给读代码的人看的,其实不是!!是给操作系统看的,在android添加系统(服务.应用)里面的1.1中,就是因为没有添加,导致系统运行不了t ...

  10. url字符转义

    作者在做短链接功能时,url参数里带了&字符,结果无法转换.后来查了一下,发现可以用其它符号代替.下面是对应表 +    URL 中+号表示空格                         ...