/// <summary>
/// 日志AOP拦截
/// </summary>
[AttributeUsage(AttributeTargets.Method, AllowMultiple = false)]
public class LogInterceptorAttribute : ContextAttribute, IContributeObjectSink
{
public LogInterceptorAttribute()
: base("LogInterceptor")
{ } /// <summary>
/// 实现IContributeObjectSink接口当中的消息接收器接口
/// </summary>
/// <param name="obj"></param>
/// <param name="next"></param>
/// <returns></returns>
public IMessageSink GetObjectSink(MarshalByRefObject obj, IMessageSink next)
{
return new LogInterceptorHandler(next);
}
}
/// <summary>
/// 日志拦截操作
/// </summary>
public sealed class LogInterceptorHandler : IMessageSink
{
//下一个接收器
private IMessageSink nextSink;
public IMessageSink NextSink
{
get { return nextSink; }
}
public LogInterceptorHandler(IMessageSink nextSink)
{
this.nextSink = nextSink;
} public IMessage SyncProcessMessage(IMessage msg)
{
OnActionExecuted(msg);
var retMsg = nextSink.SyncProcessMessage(msg);
OnActionExecuting(retMsg);
return retMsg;
}
public IMessageCtrl AsyncProcessMessage(IMessage msg, IMessageSink replySink)
{
return null;
} /// <summary>
/// 方法执行前
/// </summary>
/// <param name="msg"></param>
private void OnActionExecuted(IMessage msg)
{ } /// <summary>
/// 方法执行后
/// </summary>
/// <param name="msg"></param>
private void OnActionExecuting(IMessage msg)
{ }
}

最新文章

  1. Unity小游戏制作 - 暗影随行
  2. Android仿微信拍摄短视频
  3. Centos 7下搭建WordPress
  4. Liferay 6.2 改造系列之十六:关闭OpenID模式的单点登录
  5. Xcode 8 的 Debug 新特性
  6. 【Java】XML解析之DOM
  7. 写给自己看的Linux运维基础(四) - python环境
  8. python笔记 - day6
  9. math模块及使用方式
  10. QTREE系列题解
  11. 基于visual Studio2013解决C语言竞赛题之0523魔方阵
  12. 代码用于脚本语言开发平台Script.NET即将开源
  13. ajax中的suceess函数使用this
  14. WebAPI问题追踪日志记录过滤器
  15. 使用.NetCore 控制台演示 熔断 降级(polly)
  16. 在区块链上表白——使用C#将一句话放入比特币的区块链上
  17. Python编程Day4——if判断、while循环、for循环
  18. 学习用Node.js和Elasticsearch构建搜索引擎(5):mac本机部署canal
  19. BurpSuit添加CA证书拦截HTTPS通信
  20. python并发编程之多进程1-----------互斥锁与进程间的通信

热门文章

  1. ubuntu 安装cuda 成功
  2. [Selenium] 处理表格(python + java)
  3. poj 2719 Faulty Odometer
  4. 「LOJ#10042」「一本通 2.1 练习 8」收集雪花 (map
  5. Oracle创建表,并添加默认值和备注
  6. 【转】Pro Android学习笔记(二):开发环境:基础概念、连接真实设备、生命周期
  7. matlab 函数 bwarea
  8. 47: error: undefined reference to `QWebView::QWebView(QWidget*)'
  9. CF-851B
  10. 条款32:确定你的public继承塑模出is-a的关系