Muszę wyświetlić listę wszystkich metod rozszerzenia znalezionych w pliku.Jak uzyskać metody rozszerzenia na Roslyn?
To, co robię do tej pory (wygląda jak to działa):
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)));
Nawet nie mogłem przetestować wszystkich przypadków wygląda to tak działa. Ale zastanawiałem się, czy istnieje bardziej zwięzły sposób podejścia do tego rozwiązania.
Czy jest jakiś rodzaj IsExtension lub niektóre SyntaxKind.ExtensionMethod? Przyjrzałam się, ale nie mogłam znaleźć niczego oczywistego.
używam najnowszego Roslyn Sept/12
Dziękuję za odpowiedź, zadziałało. Zastanawiałem się tylko, czy mogę zastosować moje podejście, aby uniknąć konieczności dodawania referencji. Chciałem pozostawić projekt tak niezależny, jak to tylko możliwe. Dzięki. – eestein
Tak, jeśli nie chcesz dodawać referencji, myślę, że twoje podejście jest rozsądne. – svick
OK, dzięki! – eestein