C# 如何在类或部分类文件中找到Roslyn中方法的所有签名(重载)?
通过Roslyn,C#syntax,我有IMethodSymbol来澄清我的方法信息C# 如何在类或部分类文件中找到Roslyn中方法的所有签名(重载)?,c#,roslyn,roslyn-code-analysis,C#,Roslyn,Roslyn Code Analysis,通过Roslyn,C#syntax,我有IMethodSymbol来澄清我的方法信息 var symbolMethod = context.SemanticModel.GetSymbolInfo(invocation).Symbol as IMethodSymbol; if (symbolMethod == null) return; //-- Here I need to get other signature of the symbolMethod 表示法:容器类可能有部分类,其中包含
var symbolMethod = context.SemanticModel.GetSymbolInfo(invocation).Symbol as IMethodSymbol;
if (symbolMethod == null) return;
//-- Here I need to get other signature of the symbolMethod
表示法:容器类可能有部分类,其中包含此方法的一些签名只需执行symbolMethod.ContainingType,从那里您可以调用GetMembers来获取该类型的所有成员。您可以按名称或从中获取的任何内容进行筛选。您可以查看
SemtanticModel.GetMemberGroup
:
var symbolMethod = context.SemanticModel.GetSymbolInfo(invocation).Symbol as IMethodSymbol;
//has several signatures
if (symbolMethod.ContainingType.GetMembers().Count(it => it.Name == symbolMethod.Name) > 1)
var overloads = model.GetMemberGroup(invocation.Expression);
它返回该方法的重载列表你说的“所有签名”是什么意思?你说的是重载吗?是的,重载是指Roslyn源代码中有一个实现
isoverload
,它检查方法是否重载。它似乎是更具体用例的一部分。因此,我不知道它是否能处理所有可能的情况: