Sto tentando di utilizzare Roslyn per determinare l'API esposta pubblicamente di un progetto (e quindi eseguire ulteriori elaborazioni utilizzando queste informazioni, quindi non posso semplicemente utilizzare la reflection). Sto usando un SyntaxWalker per visitare i nodi di sintassi della dichiarazione e chiamare IModel.GetDeclaredSymbol per ciascuno. Questo sembra funzionare bene per Metodi, Proprietà e Tipi, ma non sembra funzionare sui campi. La mia domanda è, come posso ottenere FieldSymbol per un nodo FieldDeclarationSyntax?Come ottenere un FieldSymbol Roslyn da un nodo FieldDeclarationSyntax?
Ecco il codice con cui sto lavorando:
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);
}
Grazie, ho anche perso questo anche se è abbastanza ovvio :) – pyrocumulus
Si applica anche alle dichiarazioni var locali. – JamesFaix