c#如何获取方法调用的次数

本文关键字:调用 方法 获取 何获取 | 更新日期: 2023-09-27 18:16:22

在Java中-基于方面-我们可以得到函数调用的次数,例如:

SomeClass sc = new SomeClass();
sc.m1();
sc.m1();
int no = sc.getNumberOfCalls("m1");
System.out.println(no); //2

c#如何获取方法调用的次数

这是使用外部产品的另一种选择。规范的、最简单的方法可能是简单地使用一个分析器应用程序。就我个人而言,我对jetBrains dotTrace有很好的体验,但还有更多。

基本上你要做的就是让分析器启动你的应用程序,它会跟踪你代码中的所有方法调用。然后,它将显示执行这些方法花费了多少时间,以及它们被调用了多少次。

假设你想知道这个的原因实际上是性能,我认为看一下分析器是个好主意。您可以尝试通过对瓶颈所在进行有根据的猜测来优化代码,但是如果您使用了分析器,您就可以实际地测量它。我们都知道,量两次,剪一次;-)

这也是一个不错的选择

AQtime很容易做到这一点。

在您的类中这样做如何?

public class SomeClass
{
    private int counter = 0;
    public void m1()
    {
        counter++;
    }
    public int getMethodCalls()
    {
        return counter;
    }
}

此功能并未内置到。net中。但是,您可以使用任何一个模拟对象框架来完成此操作。例如,使用RhinoMocks,您可以设置对方法的预期调用次数并进行检查。

如果你为你的对象创建一个动态的,运行时的代理,并让你的代理保持跟踪,你也可以做到这一点。这可能会使治疗比疾病本身更糟糕!

——迈克尔。

我相信没有这样的内置功能,所以你可以这样写:

    public class SomeClass
    {
        public Int32 MethodCallCount { get; set; }
        public void Method()
        {
            this.MethodCallCount++;
            //Your custom code goes here!
        }
    }

如果你想更深入,你可能需要寻找AOP(面向方面编程)拦截器!-如果是这样,你可以开始寻找春天。净框架!

如果您在测试场景中,最合适的解决方案是使用模拟框架。

您也可以在c#中使用aspect。

  • 春天。净
  • EOS