aop postsharp的使用:在方法进入/成功/失败/退出时获取方法名和参数值
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的使用:在方法进入/成功/失败/退出时获取方法名和参数值的更多相关文章
- AOP - PostSharp 2.0
PostSharp是一个非常优秀的AOP框架,使用上非常方便,功能强大,对目标拦截的方法不需要做什么修改,但现在已经商业化运作从PostSharp官方网站下载一个试用版,安装 简单示例PostShar ...
- 使用SDWebImage下载图片,sharedDownloader方法下载成功,new 方法下载失败
一,经历 1.使用 new 方法创建下载对象时,下载图片总是失败,而且不会执行成功或失败后的回调. 2.参考别人的代码,用的是sharedDownloader来创建下载对象,可以顺利下载图片. 3.看 ...
- Spring AOP:面向切面编程,AspectJ,是基于注解的方法
面向切面编程的术语: 切面(Aspect): 横切关注点(跨越应用程序多个模块的功能)被模块化的特殊对象 通知(Advice): 切面必须要完成的工作 目标(Target): 被通知的对象 代理(Pr ...
- spring aop pointcut 切入点是类的公共方法(私有方法不行),还是接口的方法
spring aop pointcut 切入点是类的公共方法(私有方法不行),还是接口的方法 类的公共方法可以,但是私有方法不行 测试一下接口的方法是否能够捕捉到
- Github与Eclipse连接(方法2成功:Pleiades)
2018-3-7 第1次尝试 主要参考这位大神的笔记:http://blog.csdn.net/zhangdaiscott/article/details/16939165 方法非常简单,从官网htt ...
- STM32 USB转串口驱动安装不成功出现黄色感叹号解决方法!
相信很多人在做USB转串口时出现过串口驱动安装不成功,出现黄色感叹号问题, 出现这种问题一般是驱动安装不成功造成的. 这里我就这个问题总结几个简单的方法. 方法1: 插上USB,利用驱动人生安装驱动. ...
- ajax方法请求成功后,没有执行success的方法
$.ajax( { type: "POST", url: "AddSupplier.aspx", dataType:"text", data ...
- AOP获取方法注解实现动态切换数据源
AOP获取方法注解实现动态切换数据源(以下方式尚未经过测试,仅提供思路) ------ 自定义一个用于切换数据源的注解: package com.xxx.annotation; import org. ...
- vue在钩子中引用方法不成功
在组建创建成功后调用methods里的方法fn1,失败,提示not a function: created(){ getData(){} } solution: created(){ this.get ...
随机推荐
- loj #6570. 毛毛虫计数
$ \color{#0066ff}{ 题目描述 }$ hsezoi 巨佬 olinr 喜欢 van 毛毛虫,他定义毛毛虫是一棵树,满足树上存在一条树链,使得树上所有点到这条树链的距离最多为 1. 给定 ...
- java FastJSON的使用
1.JSON介绍 JSON(javaScript Object Notation)是一种轻量级的数据交换格式.主要采用键值对({"name": "json"}) ...
- Spark & Python
技术文章 https://www.cnblogs.com/yangzhang-home/p/6056133.html 基于Python Spark的推荐系统 https://blog.csdn.net ...
- jquery加载单文件vue组件
/**注册组件 */ function registerComponent(name){ dm[name] = {}; Vue.component(name + '-component', funct ...
- Locust源码目录结构及模块作用
Locust源码目录结构及模块作用如下: 参考文章:https://blog.csdn.net/biheyu828/article/details/84031942
- WinForm之GDI手动双缓冲技术
private void button1_Click(object sender, EventArgs e) { Bitmap bmp = new Bitmap(this.picturebox.Wid ...
- 百度ECharts数据绑定诀窍
百度Echarts的功能还是蛮好用的.. 不能说多好但是也不次.. 下边就分享一些数据绑定经验..对在处理过程中的思路有一些帮助... 报表里用的最多的可以说是 饼状图和柱形图.. 饼状图里当然是包括 ...
- 看一段Delphi导出到Word的源代码
procedure TFrmWeekAnalysisQry.BtnExportToExcelClick(Sender: TObject);var wordApp,WordDoc,WrdSelectio ...
- Zookeeper概念学习系列之zab协议
不多说,直接上干货! 上一章讨论了paxos算法,把paxos推到一个很高的位置. Zookeeper概念学习系列之paxos协议 但是,paxos有没有什么问题呢?实际上,paxos还是有其自身的缺 ...
- Eclipse取消或者关闭tomcat所有自动发布(部署)方法
1.设置publishing为Never publish automaticallu 2.modules->edit->auto reloading enabled 3.Windows & ...