gpt4 book ai didi

c# - 无法通过 Roslyn 检索类型信息

转载 作者:太空宇宙 更新时间:2023-11-03 12:27:09 25 4
gpt4 key购买 nike

我试图在 Roslyn 中检索类语法节点的类型,因此我可以通过跟随@slaks 的回答来获取封闭的命名空间:Roslyn : How to get the Namespace of a DeclarationSyntax with Roslyn C#

我有以下内容:

static async Task MainAsync(string[] args)
{
string projectPath = @"C:\Projects\ertp\Ertp.Mobile.csproj";
var msWorkspace = MSBuildWorkspace.Create();

var project = msWorkspace.OpenProjectAsync(projectPath).Result;

foreach (var document in project.Documents)
{
Console.WriteLine(project.Name + "\t\t\t" + document.Name);
SemanticModel model = await document.GetSemanticModelAsync();
var classes = document.GetSyntaxRootAsync().Result.DescendantNodes().OfType<ClassDeclarationSyntax>();
foreach (var klass in classes)
{
var info = model.GetTypeInfo(klass);
var isNull = info.Type == null; //TRUE
}
}

如果我无法获取类型,我就无法获取命名空间 - 知道如何检索我需要的详细信息吗?

最佳答案

对于 reducer ,您需要调用 model.GetDeclaredSymbol(node),然后对于命名空间,ContainingNamespace

model.GetTypeInfo(node).Type 将适用于表达式节点。

关于c# - 无法通过 Roslyn 检索类型信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44316325/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com