日志AOP的实现
2024-10-21 12:53:54
/// <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)
{ }
}
最新文章
- Unity小游戏制作 - 暗影随行
- Android仿微信拍摄短视频
- Centos 7下搭建WordPress
- Liferay 6.2 改造系列之十六:关闭OpenID模式的单点登录
- Xcode 8 的 Debug 新特性
- 【Java】XML解析之DOM
- 写给自己看的Linux运维基础(四) - python环境
- python笔记 - day6
- math模块及使用方式
- QTREE系列题解
- 基于visual Studio2013解决C语言竞赛题之0523魔方阵
- 代码用于脚本语言开发平台Script.NET即将开源
- ajax中的suceess函数使用this
- WebAPI问题追踪日志记录过滤器
- 使用.NetCore 控制台演示 熔断 降级(polly)
- 在区块链上表白——使用C#将一句话放入比特币的区块链上
- Python编程Day4——if判断、while循环、for循环
- 学习用Node.js和Elasticsearch构建搜索引擎(5):mac本机部署canal
- BurpSuit添加CA证书拦截HTTPS通信
- python并发编程之多进程1-----------互斥锁与进程间的通信
热门文章
- ubuntu 安装cuda 成功
- [Selenium] 处理表格(python + java)
- poj 2719 Faulty Odometer
- 「LOJ#10042」「一本通 2.1 练习 8」收集雪花 (map
- Oracle创建表,并添加默认值和备注
- 【转】Pro Android学习笔记(二):开发环境:基础概念、连接真实设备、生命周期
- matlab 函数 bwarea
- 47: error: undefined reference to `QWebView::QWebView(QWidget*)'
- CF-851B
- 条款32:确定你的public继承塑模出is-a的关系