Я пытаюсь использовать Roslyn для определения публично открытого API проекта (а затем сделайте некоторую дополнительную обработку с использованием этой информации, поэтому я не могу просто использовать отражение). Я использую SyntaxWalker для посещения узлов синтаксиса объявлений и вызова IModel.GetDeclaredSymbol для каждого. Это, похоже, хорошо работает для методов, свойств и типов, но, похоже, оно не работает в полях. Мой вопрос: как мне получить FieldSymbol для FieldDeclarationSyntax node?
Здесь код, с которым я работаю:
public override void VisitFieldDeclaration(FieldDeclarationSyntax node)
{
var model = this._compilation.GetSemanticModel(node.SyntaxTree);
var symbol = model.GetDeclaredSymbol(node);
if (symbol != null
&& symbol.CanBeReferencedByName
// this is my own helper: it just traverses the publ
&& symbol.IsExternallyPublic())
{
this._gatherer.RegisterPublicDeclaration(node, symbol);
}
base.VisitFieldDeclaration(node);
}