如何使用 Roslyn 获取 IEnumerable<T> 的基础类型?

How to get underlying type for IEnumerable<T> with Roslyn?

如何从 ITypeSymbol 获取 IEnumerable<MyType> 的基础类型?我看到 ITypeSymbol.OriginalDefinition 包含 link 到 IEnumerable<>,但是我从哪里可以得到 ITypeSymbol for MyType

泛型类型参数是命名类型(相对于数组或指针)的一个特性。

您需要转换为INamedTypeSymbol;然后你可以查看 TypeArguments property.

旁注:要获取开放通用类型,请使用 ConstructedFrom,而不是 OriginalDefinition