对于roslyn,如何在元数据引用中定义的类型上获取特定方法的符号?

问题描述 投票:0回答:1

我的解决方案在roslyn中可以正常运行,因此应解决所有类型

我能够像这样在元数据程序集中获得定义的类型:

string typeName = "MyCompany.MyLibrary.MyType`1";
var theType = compilation.GetTypeByMetadataName(typeName);

并且当查询成员名称时,我会在类型上看到该方法,并且我想找到对该方法的所有引用,但是我无法弄清楚应该如何获得该方法的符号。当我尝试

var symbols = compilation.GetSymbolsWithName("MethodName");

它总是返回0。

而且我也看不到从我的文字导航到树中其下方的符号的方法。

我无法获得语义模型并以这种方式找到符号,因为我没有元数据汇编的语法树。

如果在当前解决方案中重写此方法时在当前解决方案中找到一个实现,我就可以找到该符号,但是我不想经历该过程,我想直接转到该符号。

roslyn
1个回答
0
投票

ITypeSymbol具有GetMembers,它以指定名称返回类型为GetMembers的所有成员(第二次重载)。因此,您只需要检查返回的成员集至少包含一个ISymbol(或者,如果需要,可以添加更具体的检查):

IMethodSymbol
© www.soinside.com 2019 - 2024. All rights reserved.