我需要记录各种方法所花费的时间,到目前为止我正在使用 Stopwatch 的企业服务器应用程序中的代码块,我实现的示例代码如下:
var sw = new Stopwatch();
sw.Start();
DoSomething();
sw.Stop();
logManager.LogInformation(String.Format("Time taken by DoSomething function is {0} ms.", sw.ElapsedMilliseconds));
我在很多 .cs 文件的很多地方都这样写,我只是想通过编写一种常用方法或扩展来减少这种手动工作来测量所用时间。为此,我想用时间测量方法来包装我的实际方法,例如:
long elapsedMilliseconds = ExecuteAndGetTimeTaken(this.DoSomething());
或通用扩展方法,如
long elapsedMilliseconds = this.DoSomething().GetTimeTaken();
如果该方法也记录带有时间的消息,那就太好了,例如
long elapsedMilliseconds = ExecuteAndGetTimeTaken(this.DoSomething(),logManager,message);
如何编写通用类/方法或扩展来解决目的?