我有一些机制来衡量方法执行时间。只是在方法开始时我节省了时间,在方法结束时我节省了时间,我比较了这两个值。
但每次我想使用它时,我都需要更改方法体。
我正在寻找一种更简洁的方法——比如让一个对象负责测量时间,它可以封装方法调用——比如一些包装器,调用该方法,传递返回值,并在该过程中也测量时间。
另外,我知道这可能有点科幻,但是有没有办法包装或附加到所有方法(甚至方法的子集)?例如,它也可以用于日志记录——比如“我正在使用参数 YYY 调用实例 XXX 的方法并返回值 vas ZZZ”?
我知道在 Java EE 中可以实现类似的功能。 (如果我没记错的话,我认为它被称为拦截器,它们可以附加到某些或所有方法并添加功能,但我不知道这在 .net 中是否可行)
谢谢。
最佳答案
我使用了这个简单的方法:
TimeSpan TimeAction(Action action)
{
var sw = new Stopwatch();
sw.Start();
action.Invoke();
sw.Stop();
return sw.Elapsed;
}
下面是使用方法
var time = TimeAction(() =>
{
//your code here
});
关于c# - 封装方法调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9328718/