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

C# 如何使用Roslyn确定XML文档注释中cref的类型?,c#,roslyn,C#,Roslyn,我有一个文档注释,如: /// <summary>This is an xml doc comment <see cref="MyClass" /></summary> ///这是一条xml文档注释 我怎样才能让Roslyn帮我解析这个,并给我确定的MyClass类型?你需要找到与类型名称对应的CrefSyntax节点,然后你可以使用SemanticModel.GetSymbolInfo()来获取你想要的IsSymbol: string code = @"

我有一个文档注释,如:

/// <summary>This is an xml doc comment <see cref="MyClass" /></summary>
///这是一条xml文档注释

我怎样才能让Roslyn帮我解析这个,并给我确定的MyClass类型?

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

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;
stringcode=@“名称空间Foo
{
///这是一个xml文档注释
类MyClass{}
}";
var tree=SyntaxFactory.ParseSyntaxTree(代码);
CrefSyntax cref=tree.GetRoot()
.DescendantNodes(DescendantoTrivia:true)
第()类
.FirstOrDefault();
var compliation=csharpcomilation.Create(“foo”).AddSyntaxTrees(tree);
var模型=compliation.GetSemanticModel(树);
ISymbol symbol=model.GetSymbolInfo(cref.symbol);