巧用 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);
}
}
很多场景下都可以借鉴这样的写法
作者:Rick Carter
出处:http://pains.cnblogs.com/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
浙公网安备 33010602011771号