当前位置: 首页 > news >正文

巧用 using 作用域(IDisposable)的生命周期包装特性 实现前后置处理

需求:在多个方法前后输出日志

logger.Info("begin");
method();
logger.Info("end");

如果需要在方法后输出日志同时加上时长

logger.Info("begin");
var sw= Stopwatch.StartNew();
method();
sw.Stop();
logger.Info("end "+sw.ElapsedMilliseconds);

更优雅的写法

using(var stopwatchLogger = new StopwatchLogger())
{method();
}class StopwatchLogger:IDisposable
{private Stopwatch _stopwatch;private ILogger _logger;public StopwatchLogger(ILogger logger){_logger=logger;_logger.Info("begin");_stopwatch= Stopwatch.StartNew();}public void Dispose(){_stopwatch.Stop();_logger.Info("end "+_stopwatch.ElapsedMilliseconds);}
}

很多场景下都可以借鉴这样的写法

http://www.jsqmd.com/news/24949/

相关文章:

  • 2025.10.27训练记录
  • 软考复习总结
  • ? #6
  • 鲜花:不会说明你有抑郁症3
  • 算法竞赛知识点速通手册
  • ROS1 go2 vlp16 局部避障--3 篇 - 教程
  • 25.10.28随笔NOIP模拟赛总结
  • 第二十八篇
  • P8269 [USACO22OPEN] Visits S
  • Luogu P13925 [POKATT 2024] 联合猫国 / The Paw-litical Game 题解 [ 蓝 ] [ 线性 DP ] [ 种类数观察 ]
  • 深入解析:【STM32项目开源】基于STM32的独居老人监护系统
  • CSP-S 41多校 9
  • 【25.10.28】模拟赛
  • CSP-S模拟41
  • Linux双中文编码笔记
  • C++类和对象(1) - 详解
  • 人工智能之编程基础 Python 入门:第二章 Python 的编辑器 VS Code
  • 2019 福建省队集训录
  • AIX multibos bootlist
  • 记录一次nginx能通但是请求一直不了的问题
  • 【嵌入式】PWM DAC的滤波器设计
  • 被称作遗憾之物 爬满了脊骨 又把控了痛楚 被称作无用之物 修筑了唯一的通路
  • neovim在windwos11下snack.nvim的问题
  • 完整教程:Java 集合 “List + Set”面试清单(含超通俗生活案例与深度理解)
  • 禁用 IPython 历史记录 history.sqlite
  • Luogu P7914 [CSP-S 2021] 括号序列 题解 [ 蓝 ] [ 区间 DP ] [ 前缀和优化 ] [ 调试技巧 ]
  • 扩展BaseMapper类 - 详解
  • 《程序员修炼之道:从小工到专家》前五分之二观后感
  • 矩阵快速幂章节笔记(这里主要介绍的是我的错题)
  • 实验二 现代C++编程初体验