【问题标题】:Get Tuple Type in Roslyn Analyzer在 Roslyn Analyzer 中获取元组类型
【发布时间】:2019-07-24 17:22:02
【问题描述】:

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

来访问
((Microsoft.CodeAnalysis.CSharp.Symbols.TupleTypeSymbol)typeInfo.Type).TupleElements

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

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

【问题讨论】:

    标签: roslyn roslyn-code-analysis


    【解决方案1】:
    • 对于元组类型,您只需将类型转换为INamedTypeSymbol,并从中获取底层元组类型:(type as INamedTypeSymbol)?.TupleUnderlyingType,之后您将获得通常为封闭泛型类型的ITypeSymbol,最后,只取泛型类型参数:(type as INamedTypeSymbol)?.TupleUnderlyingType.TypeArguments
    • 如果您想获取有关开放的泛型类型参数的信息,例如Gen<T1,T2> 中的T1T2,您实际上可以做同样的事情:将您的类型转换为INamedTypeSymbol 并采用@987654329 @从中,如果类型是开放或封闭的泛型类型

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-01-07
      • 2019-06-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-19
      相关资源
      最近更新 更多