小编Fra*_*ker的帖子

如何将Microsoft.CodeAnalysis.ITypeSymbol与System.Type进行比较

我使用以下命令从SyntaxNode成功收到了ITypeSymbol:

SemanticModel.GetTypeInfo(sytaxNode).ConvertedType
Run Code Online (Sandbox Code Playgroud)

现在我想知道这是否ITypeSymbolSystem.Type我执行代码中存在的实例相对应,如typeof(IEnumerable<int>)someObject.GetType().

我试过了

typeInfo.ConvertedType.ToString() == type.ToString()
Run Code Online (Sandbox Code Playgroud)

但是这些不使用相同的格式规则,例如对于泛型 IEnumerable<int>

TypeInfo.ToString() == "System.Collections.Generic.IEnumerable<int>"

typeof(IEnumerable<int>).ToString() == "System.Collections.Generic.IEnumerable`1[System.Int32]"
Run Code Online (Sandbox Code Playgroud)

此外,我认为最好比较AssemblyQualifiedNames而不仅仅是命名空间和类型名称,以避免可能的名称冲突.

理想情况下,我希望能够在我的执行代码中获得与我从语义模型中获得的ITypeInfo相对应的实际System.Type实例(假设所需的程序集已加载和/或可用).这将允许检查类型是否可以从其他类型等分配.

c# roslyn

4
推荐指数
2
解决办法
1398
查看次数

标签 统计

c# ×1

roslyn ×1