我正在编写一个Roslyn分析器,并且需要知道元组的类型。我已经检索了TypeInfo
,在调试器中我可以看到有一个TupleElements悬挂在Type上,这正是我需要的。然而,它似乎只能通过铸造到TupleTypeSymbol
访问
((Microsoft.CodeAnalysis.CSharp.Symbols.TupleTypeSymbol)typeInfo.Type).TupleElements
TupleTypeSymbol由于其保护级别而无法访问,因此无法进行强制转换。是否有其他方式来访问信息?
在我的类型是开放式泛型的场景中,我有很多相同的问题:是否有某种方法可以访问泛型的类型信息?
INamedTypeSymbol
并从中获取基础元组类型:(type as INamedTypeSymbol)?.TupleUnderlyingType
,之后您将获得通常的封闭泛型类型的ITypeSymbol
,最后,只需获取泛型类型参数:(type as INamedTypeSymbol)?.TupleUnderlyingType.TypeArguments
T1
中的开放泛型类型参数T2
和Gen<T1,T2>
的信息,你实际上可以做同样的事情:将你的类型转换为INamedTypeSymbol
并从中获取TypeParameters
,如果type是open或closed泛型类型