クラス、プロパティ、およびメソッドに注釈を付けてから、注釈付きノードを取得しようとすると、クラス 1 のみが返されます。なんで?
注釈を付けるコードは次のとおりです
SyntaxAnnotation propertyAnnotation = null;
SyntaxAnnotation classAnnotation = null;
SyntaxAnnotation setMethodAnnotation = null;
document = document
.AnnotateClass(classDeclaration, out classAnnotation)
.AnnotateProperty(propertyDeclaration, out propertyAnnotation)
.AnnotateSetMethod(setMethodDeclaration, out setMethodAnnotation);
IDocument にこれらの拡張メソッドが定義されています
internal static IDocument AnnotateSetMethod(this IDocument document, MethodDeclarationSyntax method,
out SyntaxAnnotation annotation)
{
annotation = new SyntaxAnnotation();
var newRoot = document.GetSyntaxRoot()
.ReplaceNode(method, method.WithAdditionalAnnotations(annotation));
return document.UpdateSyntaxRoot(newRoot);
}
internal static IDocument AnnotateProperty(this IDocument document, PropertyDeclarationSyntax property,
out SyntaxAnnotation annotation)
{
annotation = new SyntaxAnnotation();
var newRoot = document.GetSyntaxRoot()
.ReplaceNode(property, property.WithAdditionalAnnotations(annotation));
return document.UpdateSyntaxRoot(newRoot);
}
internal static IDocument AnnotateClass(this IDocument document, ClassDeclarationSyntax classDeclaration,
out
SyntaxAnnotation annotation)
{
annotation = new SyntaxAnnotation();
var newRoot = document.GetSyntaxRoot()
.ReplaceNode(classDeclaration, classDeclaration.WithAdditionalAnnotations(annotation));
return document.UpdateSyntaxRoot(newRoot);
}
public static TSyntaxNode GetAnnotatedNode<TSyntaxNode>(this IDocument document, SyntaxAnnotation annotation)
where TSyntaxNode : CommonSyntaxNode
{
return document.GetSyntaxRoot().GetAnnotatedNode<TSyntaxNode>(annotation);
}
もしそうなら
var propertyDeclaration = document.GetAnnotatedNode<PropertyDeclarationSyntax>(propertyAnnotation);
エラーが発生しますが、ClassDeclarationSyntax で試してみると問題なく動作します。