2014-07-24 56 views
0

我想要繪製出使用Roslyn的大型解決方案中發生的所有DI。我的目標是獲得一棵我可以形象化的樹。我設法解析語法樹來查找所有類和接口及其方法,以及它們定義的項目,但現在我發現自己陷入了困境。使用Roslyn映射DI依賴關係

用Roslyn做這種分析的正確方法是什麼?我是否在每種方法中都使用方法調用,尋找Autofac Register調用?這似乎既非常尷尬又容易出錯。我希望語義API在這裏有用,但我找不到解決這個問題的好方法。

任何指針在正確的方向將不勝感激。

+1

我不確定你是什麼意思的「行走」的方法調用;你能澄清嗎?如果您想要一個翻譯單元中所有方法調用的列表,將其表示爲查詢非常簡單。 –

回答

1

如果您想查找對特定方法的所有調用,最簡單的方法是使用工作區圖層SymbolFinder類型。

首先查找ISymbol的興趣點,通過使用Compilation.GetTypeByMetadataName獲取該類型,然後通過GetMembers("methodName")獲取該方法。然後,您可以撥打SymbolFinder.FindReferencesAsync查找所有來電者。

+0

我想我真正的問題是這是否是識別DI依賴關係的正確方法?在autofac的情況下,一切最終都是一個Register <>()。作爲<>()調用,我應該尋找那些映射的東西嗎? – XeroxDucati

+0

這似乎是合理的,但我對Autofac或您的目標不夠了解, –