我需要列出文件中找到的所有扩展方法。
目前我的做法是(看起来正常):
var methods = nodes.OfType<MethodDeclarationSyntax>();
var extensionMethods = methods.Where(m =>
m.Modifiers.Any(t => t.Kind == SyntaxKind.StaticKeyword)
&& m.ParameterList.Parameters.Any(p =>
p.Modifiers.Any(pm => pm.Kind == SyntaxKind.ThisKeyword)));
虽然我没有测试所有情况,但看起来这个方法是有效的。不过我想知道是否有更简洁的解决方法。
是否有类似IsExtension或SyntaxKind.ExtensionMethod的东西?我查看了一下,但没有找到明显的答案。
我正在使用最新的Roslyn Sept/12版本。