c# - 封装方法调用

标签 c# .net

我有一些机制来衡量方法执行时间。只是在方法开始时我节省了时间,在方法结束时我节省了时间,我比较了这两个值。

但每次我想使用它时,我都需要更改方法体。

我正在寻找一种更简洁的方法——比如让一个对象负责测量时间,它可以封装方法调用——比如一些包装器,调用该方法,传递返回值,并在该过程中也测量时间。

另外,我知道这可能有点科幻,但是有没有办法包装或附加到所有方法(甚至方法的子集)?例如,它也可以用于日志记录——比如“我正在使用参数 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/

相关文章:

c# - 在不保存远程文件的情况下测量互联网速度

c# - 抽象类可以包含公共(public)方法吗?

c# - 如何解析字符串数组的JSON数组

c# - 如何检查引用需要多少字节?

c# - 我应该如何为变量添加相同的名称前缀?

.net - 代码契约和编译

.net - 表达式混合和模拟数据

.net - 使用 WCF (https) 时 WSDL 超链接中的 URL 错误

c# - 选择给定选定单元格的整行

.net - 如何找出哪个缺失的 DLL 导致我的 .NET 应用程序在启动时崩溃?