在Java中 - 基于Aspects - 我们可以得到函数调用的数量,例如:
SomeClass sc = new SomeClass();
sc.m1();
sc.m1();
int no = sc.getNumberOfCalls("m1");
System.out.println(no); //2
如何在C#中完成?
答案 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。