C#如何获取方法调用的数量?

时间:2011-11-29 22:31:02

标签: c#

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

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

如何在C#中完成?

5 个答案:

答案 0 :(得分:2)

这是使用外部产品的另一种选择..在.NET

规范,最简单的方法可能是简单地使用分析器应用程序。就个人而言,我对jetBrains dotTrace有很好的体验,但还有更多经验。

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

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

这也是不错的选择

AQtime没有任何困难。

答案 1 :(得分:1)

我相信没有为此提供内置功能,所以你可能想用这种方式编写代码:

    public class SomeClass
    {
        public Int32 MethodCallCount { get; set; }

        public void Method()
        {
            this.MethodCallCount++;
            //Your custom code goes here!
        }
    }

如果你想要更深入,你可能想要寻找AOP(面向方面​​编程)拦截器! - 如果是这样,你可能会开始寻找Spring.NET框架!

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

答案 2 :(得分:1)

如何在班上做到这一点?

public class SomeClass
{
    private int counter = 0;

    public void m1()
    {
        counter++;
    }

    public int getMethodCalls()
    {
        return counter;
    }
}

答案 3 :(得分:1)

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

如果您为对象创建dynamic, runtime proxy并让代理跟踪,也可以完成此操作。这可能会使治愈比疾病更糟糕!

- 迈克尔

答案 4 :(得分:1)

你也可以用C#做​​Aspects。