5

通过 Roslyn,C# 语法,我有 IMethodSymbol 来澄清我的方法信息,

var symbolMethod = context.SemanticModel.GetSymbolInfo(invocation).Symbol as IMethodSymbol;

if (symbolMethod == null) return;
//-- Here I need to get other signature of the symbolMethod 

符号:容器类可能有部分类,其中包括该方法的一些签名

4

3 回答 3

4

只需执行 symbolMethod.ContainingType,然后您就可以从那里调用 GetMembers 来获取该类型的所有成员。您可以按名称或您希望从那里获得的任何内容进行过滤。

于 2016-02-05T18:31:31.913 回答
3

您可以查看SemtanticModel.GetMemberGroup

var overloads = model.GetMemberGroup(invocation.Expression);

它返回方法的重载列表

于 2016-03-06T17:34:02.747 回答
1
var symbolMethod = context.SemanticModel.GetSymbolInfo(invocation).Symbol as IMethodSymbol;
//has several signatures
if (symbolMethod.ContainingType.GetMembers().Count(it => it.Name == symbolMethod.Name) > 1) 
于 2016-02-08T10:36:47.087 回答