[英]C# How to get the number of the method calls?
在Java中-基於Aspects-我們可以獲得函數調用的數量,例如:
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
{
public Int32 MethodCallCount { get; set; }
public void Method()
{
this.MethodCallCount++;
//Your custom code goes here!
}
}
如果您想更深入,則可能需要尋找AOP(面向方面的編程)攔截器! -如果是這樣,您可能會開始尋找Spring.NET框架!
如果您處於測試場景中,則最合適的解決方案是為此使用模擬框架。
在您的班級中簡單地這樣做呢?
public class SomeClass
{
private int counter = 0;
public void m1()
{
counter++;
}
public int getMethodCalls()
{
return counter;
}
}
.NET未內置此功能。 但是,您可以使用任何一個模擬對象框架來執行此操作。 例如,使用RhinoMocks,您可以設置方法的預期調用次數並進行檢查。
如果您為對象創建動態的運行時代理並跟蹤代理 ,則也可以完成此操作。 但這可能會使治療勝於疾病!
-邁克爾
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.