Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在类或部分类文件中找到Roslyn中方法的所有签名(重载)?_C#_Roslyn_Roslyn Code Analysis - Fatal编程技术网

C# 如何在类或部分类文件中找到Roslyn中方法的所有签名(重载)?

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 表示法:容器类可能有部分类,其中包含

通过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 

表示法:容器类可能有部分类,其中包含此方法的一些签名

只需执行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
,它检查方法是否重载。它似乎是更具体用例的一部分。因此,我不知道它是否能处理所有可能的情况: