如何在 class 或部分 class 文件中找到 Roslyn 方法的所有签名(重载)?
How can I find all signatures(overloads) of a method in Roslyn in a class or partial class files?
通过 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
符号:容器 class 可能有部分 class 其中包括此方法的一些签名
只需执行 symbolMethod.ContainingType,然后您可以从那里调用 GetMembers 以获取该类型的所有成员。您可以按名称或您希望从那里获得的任何内容进行过滤。
var symbolMethod = context.SemanticModel.GetSymbolInfo(invocation).Symbol as IMethodSymbol;
//has several signatures
if (symbolMethod.ContainingType.GetMembers().Count(it => it.Name == symbolMethod.Name) > 1)
你可以看看 SemtanticModel.GetMemberGroup
:
var overloads = model.GetMemberGroup(invocation.Expression);
它returns方法的重载列表
通过 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
符号:容器 class 可能有部分 class 其中包括此方法的一些签名
只需执行 symbolMethod.ContainingType,然后您可以从那里调用 GetMembers 以获取该类型的所有成员。您可以按名称或您希望从那里获得的任何内容进行过滤。
var symbolMethod = context.SemanticModel.GetSymbolInfo(invocation).Symbol as IMethodSymbol;
//has several signatures
if (symbolMethod.ContainingType.GetMembers().Count(it => it.Name == symbolMethod.Name) > 1)
你可以看看 SemtanticModel.GetMemberGroup
:
var overloads = model.GetMemberGroup(invocation.Expression);
它returns方法的重载列表