が与えられますが、クラス宣言である親ノードに上昇し、型にどの属性が配置されているかを確認するためSyntaxTreeAnalysisContext context
に必要なのは、SyntaxNodeAnalysisContext
そのプロパティを持つ です。SemanticModel
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;
}
}
SyntaxTreeAnalysisContext
からまで行く方法はありSyntaxNodeAnalysisContext
ますか?
(編集) 例を挙げてみましょう:囲んでReportDiagnostics
いる型に属性を配置してその存在を検出し、次に、次のような診断の報告を省略しますSyntaxTreeAnalysisContext
if (!hasAttributes) // simplified
{
context.ReportDiagnostic(...);
}