私はRoslynを使用して、公開されている公開されているAPIを特定しようとしています(この情報を使用してさらに処理を行うため、リフレクションだけでは使用できません)。私は、SyntaxWalkerを使用して宣言構文ノードにアクセスし、それぞれにIModel.GetDeclaredSymbolを呼び出しています。これは、メソッド、プロパティ、およびタイプでうまくいくようですが、フィールドでは機能しないようです。私の質問は、どのようにFieldDeclarationSyntaxノードのFieldSymbolを取得するのですか?FieldDeclarationSyntaxノードからRoslyn FieldSymbolを取得する方法は?
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);
}
ありがとうございます。私はまた、これがかなり分かりましたが、これも逃しました:) – pyrocumulus
ローカルのvar宣言にも適用されます。 – JamesFaix