获取Roslyn Analyzer中的元组类型

问题描述 投票:0回答:1

我正在编写一个Roslyn分析器,并且需要知道元组的类型。我已经检索了TypeInfo,在调试器中我可以看到有一个TupleElements悬挂在Type上,这正是我需要的。然而,它似乎只能通过铸造到TupleTypeSymbol访问

((Microsoft.CodeAnalysis.CSharp.Symbols.TupleTypeSymbol)typeInfo.Type).TupleElements

TupleTypeSymbol由于其保护级别而无法访问,因此无法进行强制转换。是否有其他方式来访问信息?

在我的类型是开放式泛型的场景中,我有很多相同的问题:是否有某种方法可以访问泛型的类型信息?

roslyn roslyn-code-analysis
1个回答
0
投票
  • 对于元组类型,您只需将您的类型转换为INamedTypeSymbol并从中获取基础元组类型:(type as INamedTypeSymbol)?.TupleUnderlyingType,之后您将获得通常的封闭泛型类型的ITypeSymbol,最后,只需获取泛型类型参数:(type as INamedTypeSymbol)?.TupleUnderlyingType.TypeArguments
  • 如果你想获得有关T1中的开放泛型类型参数T2Gen<T1,T2>的信息,你实际上可以做同样的事情:将你的类型转换为INamedTypeSymbol并从中获取TypeParameters,如果type是open或closed泛型类型
© www.soinside.com 2019 - 2024. All rights reserved.