2011-11-29 146 views
0

在Java - 基于1998年的方面 - 我们可以得到函数调用的次数,例如:C#如何获取方法调用的数量?

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

如何做到在C#?

+0

如果这只是分析,我建议采取在[EQATEC探查]偷看(http://www.eqatec.com/Profiler/) 。 – 2011-11-29 22:38:21

+0

如果是分析,那么dotTrace就是生意! –

回答

1

我相信那里有没有SUACH内置的功能为,所以你可能会想代码事情是这样的:

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

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

如果你想要去更深一些,你可能想寻找AOP(面向方面​​编程)拦截! - 如果是的话,你可能会开始寻找Spring.NET框架!

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

2

这是通过使用外部product..In .NET

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

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

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

这也是不错的选择

AQtime确实与没有困难。

+0

也可通过http://www.eqatec.com/Profiler/ – 2011-11-29 22:37:40

1

如何在你的班级简单地做到这一点?

public class SomeClass 
{ 
    private int counter = 0; 

    public void m1() 
    { 
     counter++; 
    } 

    public int getMethodCalls() 
    { 
     return counter; 
    } 
} 
1

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

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

- Michael

+0

进行操作如果您想查看动态代理业务,可以添加一个简短的示例... –

1

您还可以在C#中执行Aspects。

+0

还有[PostSharp](http://www.sharpcrafters.com/purchase/compare) – Krzysztof

+0

是的,没有听说过那个,谢谢 – McAden

相关问题