如何使用 Roslyn 确定 XML 文档注释中 cref 的类型

本文关键字:cref 类型 注释 文档 何使用 Roslyn 确定 XML | 更新日期: 2023-09-27 18:36:35

我有一个文档评论,例如:

/// <summary>This is an xml doc comment <see cref="MyClass" /></summary>

我怎样才能让 Roslyn 为我解析它并给我确定的 MyClass 类型?

如何使用 Roslyn 确定 XML 文档注释中 cref 的类型

您需要找到与类型名称对应的CrefSyntax节点,然后可以使用SemanticModel.GetSymbolInfo()获取所需的ISymbol

string code = @"namespace Foo
{
    /// <summary>This is an xml doc comment <see cref=""MyClass"" /></summary>
    class MyClass {}
}";
var tree = SyntaxFactory.ParseSyntaxTree(code);
CrefSyntax cref = tree.GetRoot()
    .DescendantNodes(descendIntoTrivia: true)
    .OfType<CrefSyntax>()
    .FirstOrDefault();
var compliation = CSharpCompilation.Create("foo").AddSyntaxTrees(tree);
var model = compliation.GetSemanticModel(tree);
ISymbol symbol = model.GetSymbolInfo(cref).Symbol;