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. 主流服务器虚拟化技术简单使用——Hyper-V(一)

    Tips:因为博客园排版的原因,图片显示不清晰,可以放大网页查看清晰图片. 如果系统使用物理机,需要在BIOS里面开启Intel VT-x(或AMD-V),如果是VMware workstation, ...

  2. POJ_3268 Silver Cow Party 【最短路】

    一.题面 POJ3268 二.分析 该题的意思就是给定了一个由每个节点代表农场的有向图,选定一个农场X办party,其余农场的都要去,每个农场的cow都走最短路,走的时间最久的cow耗时多少. 了解题 ...

  3. Educational Codeforces Round 58 (Rated for Div. 2)

    A. Minimum Integer 水 #include<bits/stdc++.h> #define clr(a,b) memset(a,b,sizeof(a)) using name ...

  4. 浅析PHP反序列化漏洞之PHP常见魔术方法(一)

    作为一个学习web安全的菜鸟,前段时间被人问到PHP反序列化相关的问题,以前的博客中是有这样一篇反序列化漏洞的利用文章的.但是好久过去了,好多的东西已经记得不是很清楚.所以这里尽可能写一篇详细点的文章 ...

  5. django Form数据读取问题

    1.在我学习django的过程中,我学习到了一个关于表单验证的问题 2.我们从前端post一个表单,通过urls配置,传给对应的view方法 3.然后再传给Form验证 4.一开始我是很好奇,在vie ...

  6. 分分钟钟学会Python - 基础

    1.常见操作系统 1.windows xp/win7/win/10/window server 2.linux centos,图形化界面差 ubuntu,个人开发(图形化比较好) redhat,企业级 ...

  7. 转 rman 恢复报错

    ###sample 1   原因是新库起了FRA 区,FRA 区的旧文件属于之前的归档日志文件产生,这样会导致无法识别的问题. 解决办法,清空FRA或者恢复时候不启用FRA. RMAN RESTORE ...

  8. ifconfig command not found

    CentOS minimal 命令做了修改 可以运行 ip addr

  9. Caused by java.lang.IllegalStateException Not allowed to start service Intent { cmp=com.x.x.x/.x.x.xService }: app is in background uid UidRecord问题原因分析(二)

    应用在适配Android 8.0以上系统时,会发现后台启动不了服务,会报出如下异常,并强退: Fatal Exception: java.lang.IllegalStateException Not ...

  10. 差分ADC到单端ADC

    单片机可以处理单端ADC(不在电压范围内要进行分压),也可以处理差分ADC(但需要双路输入).差分信号在传输过程中抗共模干扰能力很强,所以传输中都用差分传输,到ADC时可以差分也可以单端(需要放大器处 ...