Ich bin ein SyntaxTreeAnalysisContext context
gegeben, aber was ich brauche, ist ein SyntaxNodeAnalysisContext
mit seiner SemanticModel
Eigenschaft, um dann auf den übergeordneten Knoten aufsteigen, die eine Klassendeklaration ist und dann überprüfen, was von der Art platziert wurden Attribute.Get Semantic Modell auf SyntaxTreeAnalysisContext
SyntaxTreeAnalysisContext givenTreeContext
/// how to get to:
SyntaxNodeAnalysisContext context;
var n = context.Node;
ISymbol symbol = null;
bool hasAttributes = false;
while (n != null)
{
if (n.IsKind(SyntaxKind.ClassDeclaration))
{
symbol = context.SemanticModel.GetDeclaredSymbol(n);
hasAttributes = symbol.GetAttributes().Any();
break;
}
else
{
n = n.Parent;
}
}
Gibt es eine Möglichkeit SyntaxTreeAnalysisContext
-SyntaxNodeAnalysisContext
zu bekommen?
(Edit) Sie ein Beispiel geben: Ich habe einige Regeln verbessern wollen (die alle ReportDiagnostics
Methode von SyntaxTreeAnalysisContext
verwenden; wie SA1027 Use tabs correctly von StyleCop Analysatoren) in einer Weise, dass ich ein Attribut an der einschließenden Typ platzieren und erfassen seine Präsenz und läßt dann den Hinweis auf die Diagnose wie
if (!hasAttributes) // simplified
{
context.ReportDiagnostic(...);
}
Es klingt, als würden Sie die falsche Art von Aktion registrieren. – SLaks
Ich verstehe nicht, was Sie eigentlich machen und warum 'SyntaxTreeAnalysisContext' das einzige ist, was Sie haben. Könntest du das weiter erläutern? – svick
@svick: Siehe meine Bearbeitung. – David