Bir projenin genel olarak maruz kaldığı API'yi belirlemek için Roslyn'i kullanmaya çalışıyorum (ve daha sonra bu bilgileri kullanarak daha fazla işlem gerçekleştiriyorum, bu yüzden yalnızca yansımayı kullanamıyorum). Bildiri sözdizimi düğümlerini ziyaret etmek ve her biri için IModel.GetDeclaredSymbol öğesini çağırmak için bir SyntaxWalker kullanıyorum. Bu Yöntemler, Özellikler ve Türler için iyi çalışıyor gibi görünüyor, ancak alanlarda çalışmak için görünmüyor. Sorum şu: Field Field sembolünü FieldDeclarationSyntax düğümüne nasıl alabilirim?Bir FieldDeclarationSyntax düğümünden Roslyn FieldSymbol nasıl alınır?
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);
}
Teşekkür ederim, oldukça açık olsa da bunu da özledim :) – pyrocumulus
Ayrıca yerel var bildirimleri için de geçerlidir. – JamesFaix