gpt4 book ai didi

c# - SemanticModel.GetSymbolInfo(typeSyntax) 返回 null

转载 作者:行者123 更新时间:2023-12-04 03:11:24 25 4
gpt4 key购买 nike

我在解决 Roslyn 中的某些类型时遇到问题。
大多数时候它按预期工作
但是在某些情况下,在某些文件中,某些类型无法解析。
这是我用来处理类型的代码:

private string GetTypeName(TypeSyntax type)
{
var si = _model.GetSymbolInfo(type);
var s = si.Symbol;
if (s == null)
{
var ti = _model.GetTypeInfo(type);
if (ti.Type?.Kind == SymbolKind.ErrorType)
{
return "**error type**";
}

return "**unknown type**";
}
return GetTypeNameFromSymbol(s as ITypeSymbol);
}

我从各种不同的表达式和声明中传递了一个 TypeSyntax。
它似乎是每个文档和每个类型的失败。
在某些文档中它无法解析 Task作为一种类型,在某些情况下它无法解析不同的异常类型。

我无法创建一个重现这一点的小例子。
我在我的 C# 到 Kotlin 转译器中使用了上面的代码:
https://github.com/rogeralsing/ProjectExodus

在某些情况下,我最终会进入“ 错误类型 ”分支。
而在一些“ 未知类型”中

并且只有在尝试从我目前所见的情况下转换一些相当大的解决方案时才会发生故障。

什么会导致这种情况?
我从文档中得到我的语义模型,如下所示:
var model = await d.GetSemanticModelAsync();
var root = await d.GetSyntaxRootAsync();

还有什么我应该做的吗?

编辑:
我设法提取了这些信息:
它说缺少包含程序集。
这是为什么?源解决方案在 VS.NET 中打开并构建良好

enter image description here

最佳答案

检查您是否保存了相同的类文件,例如“class1.old”,并且您正在将其加载到 prj/solution 工作区中。在这种情况下,它会产生歧义!

关于c# - SemanticModel.GetSymbolInfo(typeSyntax) 返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44996772/

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