[Visual Studio 2012] 找出循環參照

[Visual Studio 2012] 找出循環參照

類別A裡調用了類別B

類別B裡調用了類別A

稱為循環參照,程式碼裡面若是有循環參照,可能會引發奇怪的問題,不過這在建置時是不會發生錯誤。

我故意創立一個循環參照,如下圖紅框所示:

image

 

也通過了編譯,如下圖:

image

 


假設現在這個專案或是元件不是你開發的,要如何找出這種問題?

接下來,需要產生一個相依圖型,如下圖:

image

 

產生圖型後,加入 Circular References 設定,如下圖:

image

 

可在 Legend 這裡定義 Circular References 的顏色,在這裡暫用紅色,如下圖:

image

 

目前圖型呈現的是 Assembly Name 和 Namespace Name,我們需要 Class Name才能觀察,按鍵頭展開圖形,如下圖:

image

 

點開之後就能看到紅框以及雙向箭頭,表示這兩個類別相互參照,如下圖:

image

 

對著紅線按右鍵,按下Show Contributing Links,如下圖:

image

 

由下圖得知 ModbusClientAdpater.CreateModbusClient 方法使用了 TcpModbusClient 類別

image

 

由下圖得知 TcpModbusClient.adpater 欄位使用了ModbusClientAdpater 類別

image

 

對著框框雙擊左鍵,就會跳到程式碼。

image

 

由上面步驟們可以很快的找出循環參照的來源、類型、名稱,是不是很有用呢^^

若有謬誤,煩請告知,新手發帖請多包涵


Microsoft MVP Award 2010~2017 C# 第四季
Microsoft MVP Award 2018~2022 .NET

Image result for microsoft+mvp+logo