[Visual Studio 2012] 找出循環參照
類別A裡調用了類別B
類別B裡調用了類別A
稱為循環參照,程式碼裡面若是有循環參照,可能會引發奇怪的問題,不過這在建置時是不會發生錯誤。
我故意創立一個循環參照,如下圖紅框所示:
也通過了編譯,如下圖:
假設現在這個專案或是元件不是你開發的,要如何找出這種問題?
接下來,需要產生一個相依圖型,如下圖:
產生圖型後,加入 Circular References 設定,如下圖:
可在 Legend 這裡定義 Circular References 的顏色,在這裡暫用紅色,如下圖:
目前圖型呈現的是 Assembly Name 和 Namespace Name,我們需要 Class Name才能觀察,按鍵頭展開圖形,如下圖:
點開之後就能看到紅框以及雙向箭頭,表示這兩個類別相互參照,如下圖:
對著紅線按右鍵,按下Show Contributing Links,如下圖:
由下圖得知 ModbusClientAdpater.CreateModbusClient 方法使用了 TcpModbusClient 類別
由下圖得知 TcpModbusClient.adpater 欄位使用了ModbusClientAdpater 類別
對著框框雙擊左鍵,就會跳到程式碼。
由上面步驟們可以很快的找出循環參照的來源、類型、名稱,是不是很有用呢^^
若有謬誤,煩請告知,新手發帖請多包涵
Microsoft MVP Award 2010~2017 C# 第四季
Microsoft MVP Award 2018~2022 .NET