簡體   English   中英

C#如何獲取方法調用的數量?

[英]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,您可以設置方法的預期調用次數並進行檢查。

如果您為對象創建動態的運行時代理並跟蹤代理 ,則也可以完成此操作。 但這可能會使治療勝於疾病!

-邁克爾

您也可以在C#中執行方面。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM