我想要繪製出使用Roslyn的大型解決方案中發生的所有DI。我的目標是獲得一棵我可以形象化的樹。我設法解析語法樹來查找所有類和接口及其方法,以及它們定義的項目,但現在我發現自己陷入了困境。使用Roslyn映射DI依賴關係
用Roslyn做這種分析的正確方法是什麼?我是否在每種方法中都使用方法調用,尋找Autofac Register調用?這似乎既非常尷尬又容易出錯。我希望語義API在這裏有用,但我找不到解決這個問題的好方法。
任何指針在正確的方向將不勝感激。
我想要繪製出使用Roslyn的大型解決方案中發生的所有DI。我的目標是獲得一棵我可以形象化的樹。我設法解析語法樹來查找所有類和接口及其方法,以及它們定義的項目,但現在我發現自己陷入了困境。使用Roslyn映射DI依賴關係
用Roslyn做這種分析的正確方法是什麼?我是否在每種方法中都使用方法調用,尋找Autofac Register調用?這似乎既非常尷尬又容易出錯。我希望語義API在這裏有用,但我找不到解決這個問題的好方法。
任何指針在正確的方向將不勝感激。
如果您想查找對特定方法的所有調用,最簡單的方法是使用工作區圖層SymbolFinder
類型。
首先查找ISymbol
的興趣點,通過使用Compilation.GetTypeByMetadataName
獲取該類型,然後通過GetMembers("methodName")
獲取該方法。然後,您可以撥打SymbolFinder.FindReferencesAsync
查找所有來電者。
我想我真正的問題是這是否是識別DI依賴關係的正確方法?在autofac的情況下,一切最終都是一個Register <>()。作爲<>()調用,我應該尋找那些映射的東西嗎? – XeroxDucati
這似乎是合理的,但我對Autofac或您的目標不夠了解, –
我不確定你是什麼意思的「行走」的方法調用;你能澄清嗎?如果您想要一個翻譯單元中所有方法調用的列表,將其表示爲查詢非常簡單。 –