Roslyn:获取第三方库中定义的类型的符号

AMo*_*nin 4 c# roslyn

使用Roslyn/Microsoft.CodeAnalysis,我如何获得ISymbol第三方类型,即在引用的程序集中定义的类型,它不是解决方案的一部分?在我的特定情况下,我正在寻找JSON.NET的JObject,但实际上同样的问题对于像StringBuilder等BCL的东西是有效的.

我到目前为止唯一的想法是实现一个CSharpSyntaxWalker,它查找所有方法调用,属性访问和构造函数调用,检查它们是否是我感兴趣的类型,如果是,则从中获取符号各自的SyntaxNode.我现在要实现这个,但它看起来非常麻烦.我认为必须有更好的方法,但我的google-fu没有产生任何相关的结果.

也许关于背景:我正在尝试做的是将JObject的用法替换为另一个类的用法.

Jos*_*rty 7

如果您可以访问a Compilation,则可以调用Compilation.GetTypeByMetadataName()并传入符号的完全限定元数据名称.

注意嵌套类和泛型,它们的元数据名称与普通的完全限定名称不同.有关更多信息,请参阅:C#:类名中有"+"?

获得符号后,您可以通过以下方式找到所有用法 SymbolFinder.FindAllReferences()